在一行中输入一个整数
![]()
。
接下来
行,每行输入
个整数
![]()
,用空格分隔。
如果输入的方阵是上三角矩阵,则输出
(不含双引号)并换行;否则输出
(不含双引号)并换行。
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;
} 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;
} import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int[][] matrix = new int[n][n];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
matrix[i][j] = in.nextInt();
}
}
boolean flag = true;
for (int i = 0; i < n; i++) {
for (int j = 0; j < i; j++) {
if (matrix[i][j] != 0) {
flag = false;
}
}
}
if (flag) System.out.println("YES");
else System.out.println("NO");
}
} #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<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;
} #include <iostream>
using namespace std;
#include<vector>
int main() {
int n;
cin>>n;
vector<vector<int>>v(n,vector<int>(n));
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
int a;
cin>>a;
v[i][j]=a;
}
}
bool flag=1;
for(int i=1;i<n;i++){
for(int j=0;j<i;j++){
if(v[i][j]!=0){
flag=0;
}
}
}
if(flag==1){
cout<<"YES"<<endl;
}
else{
cout<<"NO"<<endl;
}
} import sys
arrs = [list(map(int,line.strip().split())) for line in sys.stdin][1:]
flag = True
for i in range(len(arrs)):
for j in range(i):
if i==0:
continue
if arrs[i][j]:
flag=False
if flag:
print("YES")
else:
print("NO") #include <iostream>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
vector<int>square(n);
bool iflegal = true;
for(int i = 0 ; i < n ; i++){
//在出现非法情况前不能跳过输入
//反之有一个足以判断不合法的数据就可以跳过后续所有
for(int j = 0 ; j < n ; j++){
cin >> square[j];
//只检查下三角部分的元素是否为0即可
if(j < i){
if(square[j]){
iflegal = false;
break;
}
}
}
if(!iflegal) break;
}
if(iflegal){
cout << "YES" <<endl;
}else{
cout << "NO" <<endl;
}
return 0;
}