上三角矩阵问题,测试正确,答案错误

换了好多数据,测试的结果都是正确的,也找朋友帮忙看了,也没找出错误点,请问是哪里出错了呢

img

img

img

你的flag没清零呀
你测试的时候只测试一组,没有测试多组吧
第一组因为flag初始值是0,所以怎么测肯定逻辑都是对的
从第二组开始,flag一旦变成1就变不回来了,那后续判断肯定都错了呀

下面是一个示例代码,望采纳:

#include<stdio.h>

#define MAX_N 10

int main()
{
    int t;
    scanf("%d", &t);

    while (t--) {
        int n;
        scanf("%d", &n);

        int matrix[MAX_N][MAX_N] = {0};
        for (int i = 0; i < n; i++)
            for (int j = 0; j < n; j++)
                scanf("%d", &matrix[i][j]);

        int is_triangle = 1;
        for (int i = 0; i < n; i++)
            for (int j = 0; j < i; j++)
                if (matrix[i][j] != 0) {
                    is_triangle = 0;
                    break;
                }

        printf("%s\n", is_triangle ? "YES" : "NO");
    }

    return 0;
}

这个代码的思路是:遍历所有非主对角线元素,如果有非零元素,则该矩阵不是上三角矩阵。

注意:C语言中数组的下标是从0开始的,所以循环条件是j < i,而不是j < n