[JAVA] 배열 회전 출력

  • 요소 가 출력 을 시작 하 는 위치 에 주의 하 십시오.
  • 모두 몇 라운드 의 수출 이 있 습 니까? n/2 + 1
  • 매 라 운 드 는 상, 우, 하, 좌 로 나 뉜 다.
  • 각 방향의 시작 위치 와 좌표 의 관 계 를 구한다.
  • import java.util.ArrayList;
    import java.util.Scanner;
    /*
     *       ,       ,  n*n,n   。
     */
    public class rotateOrder {
         public ArrayList getORder(int[][] array,int n){
               ArrayList result=new ArrayList();
               //int startX=n/2,startY=n/2;
               //int endX=n-1,endY=n-1;        
               int i=n/2,j=n/2;           
               int flag=1;
               int temp=n*n;
               while(true){               
                             for(j=n/2-(flag-1);j<=n/2+flag-1;j++)// 
                            {
                                result.add(array[n/2-flag+1][j]);
                                temp--;
                                if(temp==0) break;       
                            }
                             if(temp==0) break; 
                            for(i=n/2-(flag-1);i<=n/2+flag-1;i++)// 
                            {
                               result.add(array[i][n/2+flag]);
                                temp--;
                                if(temp==0) break;           
                            }
                            if(temp==0) break; 
                            for(j=n/2+flag;j>=n/2-flag+1;j--)// 
                            {
                               result.add(array[n/2+flag][j]);
                                temp--;
                                if(temp==0) break;           
                            }
                            if(temp==0) break; 
                            for(i=n/2+flag;i>=n/2-flag+1;i--)// 
                            {
                               result.add(array[i][n/2-flag]);
                                temp--;
                                if(temp==0) break;           
                            }
                            if(temp==0) break; 
    
                            flag++;
    
                        }
    
               return result;
         }
         public static void main(String[] args) {
               // TODO Auto-generated method stub
               int a,b;
               Scanner sc=new Scanner(System.in);
               //a=sc.nextInt();
               //b=sc.nextInt();
               //System.out.println(a+""+b);
               int n=sc.nextInt();
               int[][] array=new int[n][n];
               for(int i=0;ifor(int j=0;jif(sc.hasNextInt())
                               array[i][j]=sc.nextInt();            
                    }
               ArrayList al=new ArrayList();
               rotateOrder ar=new rotateOrder();
               al=ar.getORder(array, n);
               System.out.println(al.toString());
    
    
         }
    }
    >   :
    5
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
    >   :
    [13, 14, 19, 18, 17, 12, 7, 8, 9, 10, 15, 20, 25, 24, 23, 22, 21, 16, 11, 6, 1, 2, 3, 4, 5]

    좋은 웹페이지 즐겨찾기