编程实现如下图所示的蛇形填数。
输入格式:
输入一个正整数,表示N*N的方阵。
输出格式:
输出蛇形填数后的N*N方阵,每个数字占4列宽。
输入样例:
在这里给出一组输入。例如:
7
输出样例:
在这里给出相应的输出。例如:
1 3 4 10 11 21 22
2 5 9 12 20 23 34
6 8 13 19 24 33 35
7 14 18 25 32 36 43
15 17 26 31 37 42 44
16 27 30 38 41 45 48
28 29 39 40 46 47 49
源代码:
package w;
import java.util.Scanner;
public class ws {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int zhi=1;
int pai=0;
int[][] a=new int[n][n]; //初始化二维数组
for (int i = 0; i < a.length+1;i++) {
int h=i-1;
if(h%2!=0) {
for (int j = 0; j <i; j++) {
a[h][j]=zhi;
zhi++;
h--;
}
}
else {
for (int j = 0; j <i; j++) {
a[j][h]=zhi;
zhi++;
h--;
}
}
}
int h=a.length-1;
for (int i = 1; i < a.length;i++) {
int x=a.length-1;
if(h%2!=0) {
for (int j = i; j< a.length;j++) {
a[j][x]=zhi;
zhi++;
x--;
}
h--;
}
else {
for (int j = i; j< a.length;j++) {
a[x][j]=zhi;
zhi++;
x--;
}
h--;
}
}
for (int i = 0; i < a.length; i++)
{
for (int j = 0; j < a[i].length; j++) {
System.out.printf( "%4d",a[i][j]);
}
System.out.println();
}
}
}