练习题——【学习补档】上三角矩阵判定

问题描述

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

输入描述:
第一行包含一个整数n,表示一个方阵包含n行n列,用空格分隔。 (1≤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

问题分析

//思路:上三角要全满,这是一个数组判断问题。

解决方案

//解决方案:用二维数组来存数字,判断二维数组是否满足上三角函数的要求
//第一:存数字——用两层for()循环来实现二维数组的存取
//第二:判断———同一,双层for()循环,写完后逐个判断
//第三:判断的依据是什么?答:上三角的元素可以找到,然后数有多少个非零元素

代码

#include 
//思路:上三角要全满,这是一个数组判断问题。
//解决方案:用二维数组来存数字,判断二维数组是否满足上三角函数的要求
//第一:存数字———用两层for()循环来实现二维数组的存取
//第二:判断————同一,双层for()循环,写完后逐个判断
//第三:判断的依据是什么?答:上三角的元素可以找到,然后数有多少个非零元素
int main() 
{
    int n=0;
    int arr[50][50]={0};
    int num=0;
    int flag=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 m=0;m<n;m++)
        num+=(n-m);

    for(int i=0;i<n;i++)    //计算上三角矩阵的非零元素个数
        for(int j=0;j<n;j++)
           if(arr[i][j]!=0)
            flag++;

    //printf("%d %d ",num,flag);
    if(num==flag)   printf("YES\n");
    else    printf("NO\n");
    return 0;
}

你可能感兴趣的:(编程康复训练,学习,矩阵)