题目描述
牛牛需要判断一个n阶方阵是否为上三角矩阵。上三角矩阵的定义是:主对角线以下的所有元素都必须为0。主对角线是指从矩阵左上角到右下角的连线。
输入格式
- 第一行输入一个整数n(1 ≤ n ≤ 10)
- 接下来n行,每行输入n个整数a_{i,1}, a_{i,2}, ..., a_{i,n}(-10^9 ≤ a_{i,j} ≤ 10^9),用空格分隔
输出格式
- 如果方阵是上三角矩阵,输出"YES"(不含引号)并换行
- 否则输出"NO"(不含引号)并换行
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 读取方阵的阶数n
int n = scanner.nextInt();
// 创建n阶方阵
int[][] matrix = new int[n][n];
// 读取矩阵元素
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
matrix[i][j] = scanner.nextInt();
}
}
// 判断是否为上三角矩阵
boolean isUpperTriangular = true;
// 检查主对角线以下的元素(行索引 > 列索引的元素)
for (int i = 0; i < n; i++) {
for (int j = 0; j < i; j++) { // j < i 确保只检查主对角线以下的元素
if (matrix[i][j] != 0) {
isUpperTriangular = false;
break; // 发现非0元素,无需继续检查当前行
}
}
// 如果已确定不是上三角矩阵,提前退出外层循环
if (!isUpperTriangular) {
break;
}
}
// 输出结果
System.out.println(isUpperTriangular ? "YES" : "NO");
scanner.close();
}
}

被折叠的 条评论
为什么被折叠?



