'홀수'에 해당되는 글 1건

  1. 2006/06/09 홀수 마방진(C 코드)

홀수 마방진(C 코드)

|

1) 홀수 마방진 프로그램을 작성하시오
  
number = 3 일때:

8 1 6
3 5 7
4 9 2

number = 5 일때:

17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9



홀수 마방진을 만드는 규칙

  • 주어진 배열(3X3, 또는 5x5)의 맨위줄의 가운데 칸에서 시작한다.
  • 현재위치에서 대각선으로 오른쪽 위로 진행하면서 다음 값을 넣는다.
  • 첫 줄 다음은 맨아래 줄이 된다.
  • 마지막 칸의 다음은 첫 칸이 된다.
  • 진행방향에 값이 이미 들어있을 경우에는 원래의 칸에서 한칸 밑으로 내려온다.


예를 들어서 3x3 홀수 마방진의 경우를 보자.

  1. a[0][1] 에서 출발한다.
  2. 오른쪽 위의 대각선 방향으로 진행한다.
       a[-1][2] 로 진행해야 하지만 -1 줄은 없는경우이다.
      따라서 a[2][2]로 진행한다.
  3. 오른쪽 위의 대각선 방향으로 진행한다.
      a[1][3] 으로 진행해야 하지만 3칸은 없다.
      따라써 a[1][0] 으로 진행한다.
  4. 오른쪽 위의 대각선 방향으로 진행한다.
      a[0][1] 로 진행해야 하지만 이미 값이 들어있다.
      따라서 a[2][0] 으로 한칸 내려 온다.
  5. 오른쪽 위의 대각선 방향으로 진행한다.
      a[1][1] 로 진행한다.
  6. 오른쪽 위의 대각선 방향으로 진행한다.
      a[0][2] 로 진행한다.
  7. 오른쪽 위의 대각선 방향으로 진행한다.
      a[-1][3] 으로 진행한다. -1줄, 3칸은 없는 경우이다.
      따라서 a[2][0]으로 진행한다. 이미 값이 들어있다.
      따라서 원래의 위치 a[0][2]에서 한칸 내려온다.
      a[1][2]로 진행한다.
  8. 오른쪽 위의 대각선 방향으로 진행한다.
      a[0][3] 으로 진행한다. 3은 없는 칸이다.
      따라서 a[0][0] 으로 진행한다.
  9. 오른쪽 위의 대각선 방향으로 진행한다.
      a[-1][1]로 진행한다. -1 줄은 없는 줄이다.
      따라서 a[2][1]로 진행한다.
끝.

이와같이 마방진을 채워나간다.

-------------------------------------------------------------

    Trackback 0 And Comment 0
    prev | 1 | next