• 螺旋数组的实现


    public class CircleNumber {
        private int[][]  Matrix; 
        private int Size; 
        public CircleNumber(int size){
            this.Size=size;
            InitMatrix();
        } 
        
        private void InitMatrix(){
             Matrix = new int[Size][]; 
            for(int i=0;i<Size;i++){
                Matrix[i]=new int[Size];
             }
        }
        
        public void FormCircleNumber(){
            int Num=this.Size*this.Size;
            int Row=Size;
            int Col=Size;
            int i=0,j=0,k=0;
            int tmp=1;
            int LeftFlag=0;
            int UpFlag=0;
            while((Num>tmp)||(Num==tmp)){  //顺时针旋转
                if((j+1<Col)&&(LeftFlag==0)&&(UpFlag==0)){  //向右
                    Matrix[i][j]=tmp;
                    j++;
                }else if(j+1==Col&&i+1<Row){//向下
                    Matrix[i][j]=tmp;
                    i++;
                    if(i==Row-1){
                        LeftFlag=1;
                    }
                }else if((i+1==Row)&&(LeftFlag==1)&&(j-1>=k)){//向左
                    Matrix[i][j]=tmp;
                    j--;
                    if(j==k){
                        UpFlag=1;
                        LeftFlag=0;
                    }
                }else if((j==k)&&(UpFlag==1)&&(i-1)>=k){//向上
                    Matrix[i][j]=tmp;
                    i--;
                }else{            //完成一圈为下一圈准备数据
                    k++;
                    i=k;
                    j++;
                    Col--;
                    Row--;
                    LeftFlag=0;
                    UpFlag=0;
                    tmp--;        
                }  
                tmp++;
                }     
            }
        
        public void Display(){
            int i,j;
            for(i=0;i<this.Size;i++){
                for(j=0;j<this.Size;j++){
                    System.out.print(Matrix[i][j]+"	");
                }
                System.out.println();
            }
        }    
            
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            CircleNumber cirnber=new CircleNumber(16) ;
            cirnber.FormCircleNumber();
            cirnber.Display();    
        }
    }
  • 相关阅读:
    EF数据迁移完整步骤
    ajax跨域最全解决方案
    WPF控件与WPF窗体
    WPF模板是把控件MVC模式化
    对象与类型
    Java加权负载均衡策略
    db2列式存储
    linux离线安装mongodb及java调用
    python合并目录下excel数据
    python多线程迁移db2数仓9T数据
  • 原文地址:https://www.cnblogs.com/ren19930504/p/3346492.html
Copyright © 2020-2023  润新知