首页 > 试题广场 >

KiKi判断上三角矩阵

[编程题]KiKi判断上三角矩阵
  • 热度指数:17509 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解

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


输入描述:

第一行包含一个整数n,表示一个方阵包含n行n列,用空格分隔。 (2≤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
示例2

输入

4
1 2 3 4
5 6 7 8
9 0 11 12 
13 0 0 16

输出

NO
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int[][] arr = new int[n][n];

        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                arr[i][j] = in.nextInt();
            }
        }

        int count = 0;
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < i; j++) {
                if(arr[i][j]==0){
                    count++;
                }
            }
        }

        int num=isT(n);
        if(num == count){
            System.out.print("YES");
        }else{
            System.out.print("NO");
        }
        
    }

    private static int isT(int n) {
        if(n==1){
            return 0;
        }else if(n==2){
            return 1;
        }else{
            return isT(n-1) + (n-1);
        }

    }
}

发表于 2024-10-01 14:46:24 回复(0)
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int[][] nums = new int[n][n];
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                nums[i][j] = in.nextInt();
            }
        }

        int flag = 0; //判断对角线下面是否为0
        for (int i = 1; i < n; i++) {
            for (int j = 0; j < i; j++) {
                if (nums[i][j] != 0) {
                    flag = 1;
                }
            }
        }
        if (flag == 0) {
            System.out.println("YES");
        } else {
            System.out.println("NO");
        }
    }
}

发表于 2024-09-10 16:51:16 回复(0)
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        boolean b = sz(n,in);
        if(b){
            System.out.println("YES");
        }else{
              System.out.println("NO");
        }
    }
    public static boolean sz(int n ,Scanner in){
        int count = 0;
        int[][] arr = new int[n][n];
        for(int i = 0; i < n; i++){
             int sum = 0;
            for(int j = 0; j < n; j++){
                arr[i][j] = in.nextInt();
                if(arr[i][j] == 0){
                   //每行零的个数
                    sum++;
                }
            }
           if(i>0){
            //从第二行开始每行增加一个零
            count++;
            if(count != sum){
                return false;
            }
           }
        }
        return true;
    }
}
发表于 2024-09-01 16:36:55 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNextInt()) {
            int a = sc.nextInt();
            int[][] arrs = new int[a][a];
            boolean mao = true;
            for (int i = 0; i < a; i++) {
                for (int j = 0; j < a; j++) {
                    arrs[i][j] = sc.nextInt();
                    if (i > (a / 2 - 1) && j < i) {
                        if (arrs[i][j] != 0) {
                            mao = false;
                        }
                    }
                }
            }
            if (mao != true) {
                System.out.println("NO");
            } else {
                System.out.println("YES");
            }
        }
    }
}
编辑于 2024-01-09 22:16:41 回复(0)
import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int[][] Martix = new int[n][n];
        //数字0的个数符合等差数列的通项公式,也即(n * (n - 1))/2 
        int countZero = 0;
        for(int i = 0;i < n;i++){
            for(int j = 0;j < n;j++){
                Martix[i][j] = scanner.nextInt();
                if(i > j && Martix[i][j] == 0){
                    countZero++;
                }
            }
        }
        if(countZero == (n * (n - 1))/2){
            System.out.println("YES");
        }else{
            System.out.println("NO");
        }
    }
}

发表于 2022-07-04 09:51:13 回复(0)
import java.util.Scanner;

/*
 * 1.用户输入size初始化二维数组的大小
 * 2.利用for循坏将用户输入的值赋予数组
 * 3.在for循坏中if[i][j-1]=0
 * 4.如果矩阵左下边有不为0的数 flag==false
 * 5.如果flag==false输出NO,否则输出YES*/
public class 判断矩阵 {

    public static void main(String[] args) {
        
        
        Scanner scanner=new Scanner(System.in);
        int size=scanner.nextInt();
        //限制size的大小
        if (size < 2  || size > 10)
        {
               return;
        }
        int[][] arr=new int[size][size];
        for (int i = 0; i < size; i++) 
        {
            for (int j = 0; j < size; j++) 
            {
                arr[i][j]=scanner.nextInt();
                
            }
            
        }
        boolean flag=true;
        for (int i = 1; i < arr.length; i++)
        {
            for (int j = 1; j <=i; j++)
            {
                if(arr[i][j-1]!=0) 
                {
                    
                    flag=false;
                    break;
                }
            }
            
        }
        if(flag==false)
        {
            System.out.println("No");
        }else
        {
            System.out.println("YES");
        }

    }}
发表于 2021-02-24 17:21:24 回复(0)
import java.util.Scanner;
/**
 * Created by kingwan on 2020/10/9.
 * 说明:取巧
 */
public class Main {
    static Scanner scanner = new Scanner(System.in);
    public static void main(String[] args) {
        boolean flag = true;//是否为上三角矩阵的标志
        int n = scanner.nextInt();
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                int value = scanner.nextInt();
                //只要j<i就是在左下角的数
                if(j<i){
                    //大于0-->false
                    if(value>0){
                        flag = false;
                    }
                }
            }
        }
        System.out.println(flag?"YES":"NO");
    }
}

发表于 2020-10-09 19:37:16 回复(1)