자바 가 시계 방향 으로 나선형 2 차원 배열 을 출력 하 는 방법 예제

최근 에 좀 재 미 있 는 논리 알고리즘 문 제 를 보고 실현 에 착수 했다.제목 은 N*N 시계 방향 나선형 배열 을 출력 하 라 는 것 입 니 다.규칙 은 다음 과 같 습 니 다.

//  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
자바 구현 예제 코드 는 다음 과 같 습 니 다.

import java.util.Scanner;

public class Main {

 public static void main(String[] args) {

  Scanner in = new Scanner(System.in);
  int n = in.nextInt();

  int[][] rect = new int[n + 1][n + 1];

  int x = 0, y = 1; //        
  int px = 1, py = 0; // x/y           
  int pn = n; //             (   ,        )
  int sum = n; //            

  /**         */
  // 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

  /**         (          ,          ) */
  // 1  16  15  14  13
  // 2  17  24  23  12
  // 3  18  25  22  11
  // 4  19  20  21  10
  // 5  6  7  8  9
  for (int i = 1; i <= n * n; i++) { //       
   //       (     1->5 x   1, y    0,       6->9,x   0,y   1,pn    )
   x += px;
   y += py;
   rect[x][y] = i;
   if (i == sum) { //            
    if (px == 1 || px == -1) { // x     0,     ->   
     pn = pn - 1; //          ,              
     sum = sum + pn;
     py = px;
     px = 0;
    } else { // x    0, y     0,     ->   
     sum = sum + pn;
     px = -py;
     py = 0;
    }
   }
  }

  for (int i = 1; i <= n; i++) {
   for (int j = 1; j <= n; j++) {
    System.out.print(rect[j][i] + "\t"); //       
   }
   System.out.println();
  }
 }

}
출력 테스트

총결산
이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 에 게 자바 를 배우 거나 사용 하 는 데 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 면 댓 글 을 남 겨 주 십시오.

좋은 웹페이지 즐겨찾기