题目是这样的,填充二维数组,按下面的顺序,如下图:

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");
   }
  }
  
 }