题目是这样的,填充二维数组,按下面的顺序,如下图:
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
以下是java的一个实现,有没有更巧妙的方法呢
public static void init(){
final int N=5;
int[][] a=new int[N][N];
int i,j,k;
for(i=0;i<N;i++){
for(j=0;j<N;j++){
a[i][j]=0;
}
}
i=0;
j=0;
k=0;
for(int t=0;t<N*N;t++){
a[i][j]=t+1;
if(k==0){
j=j+1;
if(j>=N || a[i][j]>0){
k=k+1;
j=j-1;
i=i+1;
}
}else if(k==1){
i=i+1;
if(i>=N || a[i][j]>0){
k=k+1;
i=i-1;
j=j-1;
}
}else if(k==2){
j=j-1;
if(j<0 || a[i][j]>0){
k=k+1;
j=j+1;
i=i-1;
}
}else{
i=i-1;
if(i<0 || a[i][j]>0){
k=0;
i=i+1;
j=j+1;
}
}
}
for(i=0;i<N;i++){
System.out.print("\n");
for(j=0;j<N;j++){
System.out.print(a[i][j]+"\t");
}
}
}
浙公网安备 33010602011771号