在一行中输入一个整数
![]()
。
接下来
行,每行输入
个整数
![]()
,用空格分隔。
如果输入的方阵是上三角矩阵,则输出
(不含双引号)并换行;否则输出
(不含双引号)并换行。
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,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; }
#include<bits/stdc++.h> using namespace std; int main() { int n; cin>>n; int arr[n][n],arr_num; int flag = 1,count = 0,count_s = 0; for(int i = 0;i<n;i++){ for(int j = 0;j<n;j++){ cin>>arr_num; arr[i][j] = arr_num; if(i>j && arr[i][j] == 0){ flag = 0; //统计0出现的个数 count++; } } } //求正常0出现的个数 for(int m = 0;m<n;m++){ count_s += m; } //判断比较 if(flag == 0 && count == count_s){ cout<<"YES"<<endl; } else cout<<"NO"<<endl; }
import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner sc=new Scanner(System.in); int n=sc.nextInt(); int[][] arr=new int[n][n]; int flag=1; for (int i=0;i<n;i++) { for (int j = 0; j < n; j++) { arr[i][j] = sc.nextInt(); } sc.nextLine(); } for (int i=0;i<n;i++){ for (int j=0;j<i;j++){ if(arr[i][j]!=0){ flag=0; } } } if(flag==1){ System.out.println("YES"); }else { System.out.println("NO"); } } }
#include <stdio.h> #include <stdlib.h> int main(void) { int flag; int i, j, n; scanf("%d", &n); int (*a)[n] = (int (*)[n])malloc(sizeof(int) * n * n); if (NULL == a) { fprintf(stderr, "Memory allocation failed!\n"); exit(EXIT_FAILURE); } for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { scanf("%d", &a[i][j]); } } flag = 1; for (i = 1; i < n; i++) { for (j = 0; j < i; j++) { if (a[i][j] != 0) { flag = 0; break; } } } printf("%s\n", 1 == flag ? "YES" : "NO"); free(a); a = NULL; 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; 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; }
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 boolean flag = true; while (in.hasNextInt()) { // 注意 while 处理多个 case int a = in.nextInt(); for(int i=0;flag==true && i<a;i++){ for(int j=0;j<a;j++){ int m = in.nextInt(); if(j<i && m!=0){ flag =false; break; } } } } System.out.println(flag==true?"YES":"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 a[10][10] = { 0 }; scanf("%d", &n); int i, j; for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { scanf("%d", &a[i][j]); } } int flag = 1; for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { if (i > j) { if (a[i][j] == 0) { flag = 1; } else { flag = 0; break; } } } if (flag == 0) { break; } } if (flag == 1) { printf("YES\n"); } else { printf("NO\n"); } return 0; }