列表

详情


BC136. KiKi判断上三角矩阵

描述

KiKi想知道一个n阶方矩是否为上三角矩阵,请帮他编程判定。上三角矩阵即主对角线以下的元素都为0的矩阵,主对角线为从矩阵的左上角至右下角的连线。

输入描述

第一行包含一个整数n,表示一个方阵包含n行n列,用空格分隔。 (2≤n≤10)

从2到n+1行,每行输入n个整数(范围-231~231-1),用空格分隔,共输入n*n个数。

输出描述

一行,如果输入方阵是上三角矩阵输出"YES"并换行,否则输出"NO"并换行。

示例1

输入:

3
1 2 3
0 4 5
0 0 6

输出:

YES

示例2

输入:

4
1 2 3 4
5 6 7 8
9 0 11 12 
13 0 0 16

输出:

NO

原站题解

C 解法, 执行用时: 1ms, 内存消耗: 328KB, 提交时间: 2021-08-13

#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]);
        }
    }
    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
        {
            if(i>j)
            {
                if(arr[i][j]!=0)
                {
                    printf("NO");
                    return 0;
                }
            }
        }
    }
    printf("YES");
    return 0;
}

C 解法, 执行用时: 1ms, 内存消耗: 336KB, 提交时间: 2021-12-26

#include<stdio.h>
int main()
{
    int n = 0;
    scanf("%d", &n);
    int i = 0;
    int j = 0;
    int count = 0;
    int arr[11][11] = {0};
    for (i=0;i<n;i++)
    {
        for (j=0;j<n;j++)
        {
            scanf("%d", &arr[i][j]);
        }
    }
    for (i=0;i<n;i++)
    {
        for (j=0;j<i;j++)
        {
            if (arr[i][j] != 0)
            {
                count++;
            }
        }
    }
    if (count != 0)
    {
        printf("NO\n");
    }
    else
    {
        printf("YES\n");
    }
    
    
    return 0;
}

C 解法, 执行用时: 1ms, 内存消耗: 356KB, 提交时间: 2021-09-11

#include<stdio.h>


int main(){
    int i,j,n,a[100][100]={0};
    int flag = 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;
        }
    }
    if(flag)
        printf("NO");
    else
        printf("YES");
    return 0;
}

C 解法, 执行用时: 1ms, 内存消耗: 368KB, 提交时间: 2020-12-12

#include<stdio.h>
int main()
{
    int a[10][10],i,j,n,m,l;
    scanf("%d",&n);
    for(i=0;i<n;i++){
        for(j=0;j<n;j++)
        {
            scanf("%d",&a[i][j]);
        }
    }
    m=0;
    for(i=0;i<n;i++){
        for(j=0;j<i;j++){
            if(a[i][j]!=0){
                m=1;
            }
        }
   }
    if(m==0){
        printf("YES");
    }
    else{
        printf("NO");
    }
    printf("\n");
}

C 解法, 执行用时: 1ms, 内存消耗: 368KB, 提交时间: 2020-08-16

#include<stdio.h>
int main()
{
    int n;
    scanf("%d",&n);
    int a[n][n];
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
       {
           scanf("%d",&a[i][j]);
       }
    }
    int num=0;
    for(int i=1;i<n;i++)
    {
        for(int j=0;j<i;j++)
       {
           if(a[i][j]==0)
               num++;
       }
    }
    //printf("%d\n",num);
    int m;
    m=n*(n-1)/2;
    //printf("%d\n",m);
    if(num==m)
        printf("YES\n");
    else
        printf("NO\n");
}

上一题