牛客算法基础noob49 上三角矩阵判定
题目描述
牛牛需要判断一个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);// 读取方阵的阶数nint 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();}
}