回环矩阵小程序

一个N*N的矩阵回环赋值如:


20161101170927.png

程序如下:

import java.util.Arrays;
public class ArrayNumber{
    private static final int N = 16;           //定义矩阵大小
    private static int[][] numberArray;    //存放矩阵数据的二维数组
    
    public static void main(String[] args){
        numberArray = new int[N][N];
        numberArray[0][0] = 1;
        RIGHT(numberArray, 0, 0);
        for(int i = 0; i < N; i++){
            System.out.println(Arrays.toString(numberArray[i]));
        }
    }
    
   //二维数组向右赋值
    private static void RIGHT(int[][] nArray,int x,int y){
        int maxY = nArray[x].length;
        for(int i = 0; i < maxY - 1; i++){
            if(nArray[x][y+1] > 0) break;
            y++;
            nArray[x][y] = nArray[x][y - 1] + 1;
        }
        DOWN(nArray, x, y);
    }
    //二维数组向下赋值
    private static void DOWN(int[][] nArray,int x,int y){
        int maxX = nArray.length;
        for(int i = 0; i < maxX - 1; i++){
            if(nArray[x + 1][y] > 0) break;
            x++;
            nArray[x][y] = nArray[x - 1][y] + 1;
        }
        LEFT(nArray, x, y);
    }
    //二维数组向左赋值
    private static void LEFT(int[][] nArray,int x,int y){

        for(int i = y; i > 0; i--){
            if(nArray[x][y - 1] > 0) break;
            y--;
            nArray[x][y] = nArray[x][y + 1] + 1;
        }
        UP(nArray, x, y);
    }
    //二维数组向上赋值
    private static void UP(int[][] nArray,int x,int y){
        for(int i = x; i > 1; i--){
            if(nArray[x - 1][y] > 0) break;
            x--;
            nArray[x][y] = nArray[x + 1][y] + 1;
        }
        int maxX = nArray.length;
        int maxY = nArray[x].length;
        if(nArray[x][y] == N * N) return;
        else RIGHT(nArray, x, y);
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容