问题:打印回型数组
知识点:二维数组
思路:回型数组可以拆开为上下左右四条边,每一条边都是线性的排序,第二轮的每一条边都比第一轮的每一条边短一位数。代码如下:
int n=6;
int[][] arr = new int[n][n];
int minX=0,minY=0,maxX=n-1,maxY=n-1;
int count=0;
while (minX<=maxX){
for (int x = minX; x <=maxX ; x++) {
arr[minY][x]=++count;
}
minY++;
for (int y = minY; y <=maxY ; y++) {
arr[y][maxX]=++count;
}
maxX--;
for (int x = maxX; x >=minX ; x--) {
arr[maxY][x]=++count;
}
maxY--;
for (int y = maxY; y >=minY ; y--) {
arr[y][minX]=++count;
}
minX++;
}
for (int i = 0; i <arr.length ; i++) {
for (int j = 0; j <arr[i].length ; j++) {
System.out.print(arr[i][j]+"\t");
}
System.out.println();
}
输出结果如下:
1 2 3 4 5 6
20 21 22 23 24 7
19 32 33 34 25 8
18 31 36 35 26 9
17 30 29 28 27 10
16 15 14 13 12 11