Nyoj 蛇形填数
蛇形填数
时间限制:3000 ms | 内存限制:65535 KB
难度:3
描述
在n*n方陈里填入1,2,...,n*n,要求填成蛇形。例如n=4时方陈为:
10 11 12 1
9 16 13 2
8 15 14 3
7 6 5 4
输入
直接输入方陈的维数,即n的值。(n<=100)
输出
输出结果是蛇形方陈。
样例输入
3
样例输出
7 8 1
6 9 2
5 4 3
package nyoj33;
import java.util.Scanner;
public class Main {
publicstatic void main(String[] args) {
Scannerreader = new Scanner(System.in);
intn = reader.nextInt();
intx = 0,y = 0;
x= 0; y = n-1;
intcount=1;
int[][]a = new int[n][n];
for(inti = 0;i<n;i++){
for(intj = 0;j<n;j++){
a[i][j]= 0;
}
}
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++;
}
a[x][y]= count++;
/*while(count<=n*n){
if(count==n*n)
break;
while((y+1)<n&& 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)>=0&& a[x][y-1]==0)
a[x][y--]= count++;
while((x+1)<n&& a[x+1][y]==0)
a[x++][y]= count++;
}*/
for(inti = 0;i<n;i++){
for(intj = 0;j<n;j++){
System.out.print(a[i][j]+"");
}
System.out.println();
}
}
}