1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
解决思路:
以 :为例
1 2 3
8 9 4
7 6 5
我们会发现 ,这种类似如如何桌面弹球一样,数字都是在碰到边界和其它数字后改变运行状态,
一共有四种运行状态
1. 可以发现四种状态时 轮询的。
代码如下 :
public static void main(String[] args) {
int weight = 4 ,height =4 ;
int[][] strings = new int[weight][height];
int style = 0;
int x = -1;
int y = 0;
int walk1 = 0;
while (walk1 < 16) {
System.out.println(walk1);
walk1 ++;
if (style == 0 && (x + 1 == weight || strings[x + 1][y] != 0)) {
style = 1;
}
if (style == 1 && (y + 1 == height || strings[x][y + 1] != 0)) {
style = 2;
}
if (style == 2 && (x == 0 || strings[x - 1][y] != 0)) {
style = 3;
}
if (style == 3 && (y -1 ==0 || strings[x][y - 1] != 0)) {
style = 0;
}
if(style == 0){
x++;
}
if(style == 1){
y++;
}
if(style == 2){
x--;
}
if(style == 3){
y--;
}
strings[x][y] = walk1;
}
// }
for(int i = 0 ; i < weight; i++){
for(int j = 0; j < height ; j++){
System.out.print( strings[j][i] + "\t");
}
System.out.println();
}
}
|