您的位置:首页 > 其它

任意矩形填充蛇形数字

2014-12-23 22:06 281 查看
蛇形数字就是在一个数组中将数字填成这样

7 8 1
6 9 2
5 4 3

代码如下

public class 蛇形矩阵 {
    public static void main(String[] args){
        int ROW=7;
        int COLUMN=8;
        int[][] snake=new int[ROW][COLUMN];
        full(snake);
        print(snake);
    }
    public static void full(int[][] snake){
        int ROW=snake.length;
        int COLUMN=snake[0].length;
        int count=0;
        int bx=COLUMN-1,by=0;
        snake[by][bx]=++count;
        int[] X={0,-1,0,1};
        int[] Y={1,0,-1,0};
        while(true){
                for(int i=0;i<4;i++){
                    if(0<=bx+X[i] && 0<=by+Y[i] && bx+X[i]<COLUMN && by+Y[i]<ROW && snake[by+Y[i]][bx+X[i]]==0)
                        while(true){
                            bx+=X[i];
                            by+=Y[i];
                            snake[by][bx]=++count;
                            if(!(0<=bx+X[i] && 0<=by+Y[i] && bx+X[i]<COLUMN && by+Y[i]<ROW && snake[by+Y[i]][bx+X[i]]==0))
                                break;
                        }
                }
                if(count==ROW*COLUMN)
                    break;
            }
    }
    public static void print(int[][] snake){
        for(int[] row:snake){
            for(int column:row)
                System.out.print(column+"\t");
            System.out.println("");
        }        
    }
}

//运行结果如下

20    21    22    23    24    25    26    1    
19    40    41    42    43    44    27    2    
18    39    52    53    54    45    28    3    
17    38    51    56    55    46    29    4    
16    37    50    49    48    47    30    5    
15    36    35    34    33    32    31    6    
14    13    12    11    10    9     8     7
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: