在一行中输入一个整数
![]()
。
接下来
行,每行输入
个整数
![]()
,用空格分隔。
如果输入的方阵是上三角矩阵,则输出
(不含双引号)并换行;否则输出
(不含双引号)并换行。
3 1 2 3 0 4 5 0 0 6
YES
该矩阵主对角线以下元素均为,因此是上三角矩阵。
3 1 0 0 0 2 0 1 0 3
NO
该矩阵在第行第
列元素为
,故不是上三角矩阵。
#include <stdio.h> int main() { int n=0; scanf("%d",&n); int i=0; int arr[n][n]; for (i=0; i<n; i++) { int j=0; for (j=0; j<n;j++) { scanf("%d",&arr[i][j]); } } for (i=1; i<n; i++) { int j=0; for (j=0; j<i;j++) { if (arr[i][j]!=0) { printf("NO\n"); return 0; } } } printf("YES\n"); return 0; }
#include <stdio.h> int main() { int n=0; int arr[10][10]={0}; scanf("%d",&n); for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { scanf("%d",&arr[i][j]); } } //判断 for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { if(i>j) { if(arr[i][j]!=0) { printf("NO\n"); return 0; } } } } printf("YES\n"); return 0; }
#include<stdio.h> int main() { int n = 0; int i = 0; int arr[10][10] = {0}; scanf("%d",&n); for(i = 0;i<n;i++) { int j = 0; for(j = 0;j<n;j++) { scanf("%d ",&arr[i][j]); if(i>j && arr[i][j] != 0)//边输入边判断 { printf("NO\n"); return 0; } } } printf("YES\n"); return 0; }
#include <stdio.h> int ADD(int n) { if (n == 1) return 1; else return n + ADD(n - 1); } int main() { int n = 0, sum = 0; scanf("%d", &n); int arr[n * n]; for (int i = 0; i < n * n; i++) { scanf("%d", &arr[i]); } for (int i = 1; i < n; i++) { for (int j = 0; j < i; j++) { if (arr[i * n + j] == 0) { sum++; } } } if (sum == ADD(n - 1)) printf("YES\n"); else printf("NO\n"); return 0; }
#include <stdio.h> int Judge(long long arr[10][10],int n) { int count = 0; int i = 0; for(i = 1;i < n;i++) { int j = 0; for(j = 0;j <= i;j++) { if(arr[i][j] == 0) { count++; } } } if(count == ((n * (n - 1)) / 2)) { return 1; } else { return 0; } } int main() { int n = 0; scanf("%d", &n); long long arr[10][10]; int i = 0; for(i = 0;i < n;i++) { int j = 0; for(j = 0;j < n;j++) { scanf("%lld", &(arr[i][j])); } } int res = Judge(arr,n); if(res == 1) { printf("YES\n"); } else { printf("NO\n"); } return 0; }
#include<stdio.h> //解题思路:录入元素的同时判断是否为上三角矩阵 int main() { int n; scanf("%d",&n); //获取n int arr[n][n]; int i,j; int flag = 1; for(i = 0; i < n; i++) //输入n*n元素 { for(j = 0; j < n; j++) { scanf("%d",&arr[i][j]); if(i > j) //i>j时为下三角的元素 { if(arr[i][j] != 0){ //下三角元素中有不是0的 flag = 0; //标志不为上三角矩阵 //break } } } //if(flag == 0) break; //Note: 上面两个break语句其实可以直接退出循环并达成输出正确的结果 // 但是不满足题目的输入描述:共输入n*n个元素 } printf("%s",(flag?"YES":"NO")); return 0; }
#include <stdio.h> int main() { int n = 0; scanf("%d", &n); int arr[10][10] = {0}; int i = 0; int j = 0; for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { scanf("%d", &arr[i][j]); } } int flag = 0; for (i = 1; i < n && flag == 0; i++) { for (j = 0; j < i; j++) { if (arr[i][j]) { flag = 1; break; } } } if (flag) { printf("NO\n"); } else { printf("YES\n"); } return 0; }
int main() { int n,cnt=0,arr[10][10]; scanf("%d",&n); for(int i=0;i<n;i++) for(int j=0;j<n;j++){ scanf("%d",&arr[i][j]); } for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { if(arr[i][j]==0) cnt++; } } if(cnt==(n-1)*n/2)//等差数列求和 printf("YES\n"); else printf("NO\n"); return 0; }
#include<stdio.h> int main() { int i, j,m; int a[50][50] = { 0 }; scanf("%d",&m);//输入数组 for (i = 0; i < m; i++) { for (j = 0; j < m; j++) { scanf("%d", &a[i][j]); } } for(i=0;i<m;i++) { for(j=0;j<m;j++) { if(i>j) { if(a[i][j]!=0) { printf("NO\n"); return 0;//如果有不等于0的,直接结束 } } } } printf("YES\n");//没有不等于0的,直接输出yes return 0; }
int main(){ int n; scanf("%d", &n); int flag = 1; int arr[10][10] = {0}; for(int i = 0; i < n; i++){ for(int j = 0; j < n; j++){ scanf("%d ", &arr[i][j]); if(i > j){ if(arr[i][j] != 0){ flag = 0; } } } } if(flag != 1) printf("NO\n"); else printf("YES\n"); return 0; }
#include<stdio.h> int main() { int arr[10][10] = { 0 }; int n = 0; int i, j; while (~scanf("%d", &n)) { //输入至数组 for (i = 0; i < n; i++) for (j = 0; j < n; j++) scanf("%d", &arr[i][j]); //对角线从k/2行开始 int flag = 0; int k = n / 2; for (i = k; i < n; i++) { for (j = 0; j < i; j++) if (arr[i][j] != 0) { flag = 1; break; } if (flag == 1) { printf("NO\n"); break; } } if (flag == 0) printf("YES\n"); } return 0; }
int main() { int n=0; scanf("%d",&n); int i=0; int j=0; int flag=0; int arr[10][10]={0}; for(i=0;i<n;i++) { for(j=0;j<n;j++) { scanf("%d",&arr[i][j]); //注意此处判断条件 if(i>j&&arr[i][j]!=0) { flag=1; } } } if(flag==1) { printf("NO\n"); } else { printf("YES\n"); } return 0; }
#include <stdio.h> int main(){ int n,i,j,flag=0;//flag标示是否矩阵是否相同 int a[11][11]={0}; scanf("%d",&n); for(i=0;i<n;i++) { for(j=0;j<n;j++) { scanf("%d",&a[i][j]); } } for(i=1;i<n;i++) { for(j=0;j<i;j++) { if(a[i][j] != 0) {flag = 1; break;} } } if(flag == 1) printf("NO\n"); else printf("YES\n"); return 0; }
#include<stdio.h> int main() { int n,i,j,flag=1; int a[10][10]; scanf("%d",&n); for(i=0;i<n;i++) { for(j=0;j<n;j++) { scanf("%d",&a[i][j]); } } for(i=1;i<n;i++) { for(j=0;j<i;j++) { if(a[i][j]!=0) { flag=0; } } } if(flag) printf("YES\n"); else printf("NO\n"); return 0; }