想要以锯齿形图案打印n * n矩阵

时间:2019-05-16 09:29:28

标签: java

这是我的代码:

class Main{
    public static void main(String args[]){
        System.out.println("Enter the value of N: ");
        Scanner sc = new Scanner(System.in);
        int n1 = sc.nextInt();
        int max = 0, min = 0;
        if(n1<=50){ 
            for(int i=1;i<=n1;i++){
                for(int j=1;j<=n1;j++){
                    max = n1*i;
                    min = (max-n1)+1;
                    if(i%2!=0){ 
                        while(max<=min){
                            System.out.print(max);
                            max--;
                        }
                    }
                    if(i%2==0){ 
                        while(min<=min){
                            System.out.print(min);
                            min++;
                        }
                    }   
                }
                System.out.println("");
            }   
        }
        else
            System.out.print("Invalid Value of n1");
    }
}

问题是要打印一个锯齿形的矩阵 如果我们输入n = 4,则输出应为:

4 3 2 1 
5 6 7 8
12 11 10 9
13 14 15 16

如果我们输入3,它应该是

3 2 1
4 5 6
9 8 7

现在在上面的代码中它进入了无限循环

2 个答案:

答案 0 :(得分:2)

考虑到这很可能是某种家庭作业,我不会为您提供解决方案,因为它会取消学习过程。相反,我只给您一些提示。

  • 您需要2个嵌套的for循环,外部循环用于行,内部循环用于列。
  • 找出给定行中的最大和最小数字。它们连接到行号。
  • 如果行号为奇数,请从最大号开始,然后向下。如果是奇数,请从最小数开始,然后增加。

答案 1 :(得分:1)

您有没有机会浏览这篇文章Print matrix in zag-zag fashion