java回形数矩阵

Posted DQ_CODING

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java回形数矩阵相关的知识,希望对你有一定的参考价值。

题目

从键盘输入一个整数(1~20)
则以该数字为矩阵的大小,把1,2,3…n*n 的数字按照顺时针螺旋的形式填入其中。例如: 输入数字2,则程序输出: 1 2
4 3
输入数字3,则程序输出: 1 2 3
8 9 4
7 6 5
输入数字4, 则程序输出:
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7

参考

参考网址

代码

public class LoopsNumber 
    public static void main(String[] args) 
        System.out.println("请输入回形数矩阵的大小:");
        Scanner scanner = new Scanner(System.in);
        int num = scanner.nextInt();
        loop(num);
        scanner.close();
    

    public static void loop(int num) 
        int[][] arr = new int[num][num];
//        右箭头方向
//        arr[0][0]=1;
//        arr[0][1]=2;
//        arr[0][2]=3;
//        下箭头方向
//        arr[1][2]=4;
//        arr[2][2]=5;
//        arr[2][1]=6;
//        左箭头方向
//        arr[2][0]=7;
//        arr[1][0]=8;
//        上箭头方向
//        arr[1][1]=9;

//        值
        int value=1;
//        行
        int i=0;
//        列
        int j=0;
//        矩阵最中心的值为num*num,此时赋值结束
       while (arr[i][j]!=Math.pow(num,2))
           arr[i][j]=value;
           /*当遇到四个角的拐点时,进行判断,然后对i和j的值进行递增或者递减;int型的二维数组在没有赋值时内层元素默认为0,作为判断条件*/
//右箭头方向赋值
           if(j!=num-1&&arr[i][j+1]==0)
//为了预防还没有走到最上面就往右箭头方向赋值
             if (i>0&&arr[i-1][j]==0)
                 i--;
               else 
                 j++;
             
//下箭头方向赋值
           else if (i!=num-1&&arr[i+1][j]==0)
               i++;
//左箭头方向赋值
           else if (j>0&&arr[i][j-1]==0)
               j--;
//上箭头方向赋值
           else if (i>0&&arr[i-1][j]==0)
               i--;
           
           value++;

       
        for (int[] ints : arr) 
            for (int anInt : ints) 
                System.out.print(anInt + "\\t");
            
            System.out.println();
        
    


以上是关于java回形数矩阵的主要内容,如果未能解决你的问题,请参考以下文章

十四:回形取数

回形取数

基础练习 回形取数

2.python算法之回形矩阵

基础练习 回形取数

蓝桥杯 基础练习 BASIC-25 回形取数