螺旋矩阵的Java实现

来源:互联网 发布:淘宝修改中差评团队 编辑:程序博客网 时间:2024/06/06 20:05

记得以前的一次程序题,花好长时间才弄出来的:

给定一个正整数n,构造一个n×n维的矩阵,从1,2,........到n×n使其位置的轨迹构成一个螺旋状,for example when n=5,the matrix showed as below:

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 ,

/**
 * @(#)Exam.java
 *
 *
 * @westsky

 * @version 1.00 2007/4/21
 */

public class Exam {
       
    /**
     * Creates a new instance of <code>Exam</code>.
     */
    public Exam() {
    }
   
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
       
        int n=5;
        int m;
        int flag=0;
        int k=0;
        int num=1;
        int [][]a=new int[n][n];
        
        
        for(m=n-1;m>0;m=m-2){
         if(flag==0){
          for(int i=0;i<m;i++){
           a[k][i+k]=num++;
          }
           
          flag=(flag+1)%4;
         }
         
         
         if(flag==1){
          for(int i=0;i<m;i++){
           a[i+k][n-1-k]=num++;
          }
           
          flag=(flag+1)%4; 
         }
         
         
         if(flag==2){
          for(int i=0;i<m;i++){
           a[n-1-k][n-1-i-k]=num++;
          }
           
          flag=(flag+1)%4;
         }
       
          
          if(flag==3){
          for(int i=0;i<m;i++){
           a[n-1-i-k][k]=num++;
          }
           
          flag=(flag+1)%4;
         }
         
         
         k++;
        }
       
        if((n%2)==1)
         a[n/2][n/2]=n*n;
         
        String format=null;
        for(int i=0;i<n;i++){
         for(int j=0;j<n;j++){
          format=a[i][j]>9?", ":" , ";
          System.out.print(a[i][j]+format);
         }
          
         System.out.println();
        }
    }
}

Though the code maybe redundant,it resolves the problem!!!