问题:
在n*n方阵里填入1,2,....,n*n,要求填成蛇形。例如,n=4时方阵为:
10 11 12 1
9 16 13 2
8 15 14 3
7 6 5 4
分析:
从1开始填写,设“笔”的坐标为(x,y),则一开始x=0,y=n-1。
“笔”的移动轨迹是:下......,左.......,上.......,右.....。
如此循环........
import java.util.Scanner;
public class Main {
private static Scanner sc;
public static void main(String[] args) {
sc = new Scanner(System.in);
int n = sc.nextInt();
int x = 0;
int y = n - 1;
int count = 1;
int[][] a = new int[n][n];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
a[i][j] = 0;
}
}
a[0][n - 1] = 1;
while (count < n * n) {
while (x + 1 < n && a[x + 1][y] == 0) {
a[++x][y] = ++count;
}
while (y - 1 >= 0 && a[x][y - 1] == 0) {
a[x][--y] = ++count;
}
while (x - 1 >= 0 && a[x - 1][y] == 0) {
a[--x][y] = ++count;
}
while (y + 1 < n && a[x][y + 1] == 0) {
a[x][++y] = ++count;
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
System.out.printf("%5d", a[i][j]);
}
System.out.println();
}
}
}