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

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

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

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

解题思路
设置一个flag,用来判断是否为上三角矩阵,若三角矩阵里出现一个非0的数,则该矩阵不成立 flag=0.

代码

#include <iostream>
#include <cstring>
using namespace std;

int main()
{
    int a[12][12], n, i, j, flag;
    flag = 1;//假设三角矩阵成立 
    cin>>n;
    for(i = 0;i < n;i++)
        for(j = 0;j < n;j++)
            cin>>a[i][j];

    for(i = 1;i < n;i++)
    {
        for(j = 0;j < i;j++)
        {
            if(a[i][j] != 0) flag = 0;//若三角矩阵里出现一个非0的数,则该矩阵不成立 
        }
    }
    if(flag) cout<<"YES"<<endl;//flag,用来判断是否为上三角矩阵,若三角矩阵里出现一个非0的数,则该矩阵不成立 flag=0.
    else cout<<"NO"<<endl;
}