C/C++ 언어 하노이 탑/타워 예제


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
26
27
28
29
30
31
32
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
 
void move(int n, char a, char b, char c);
 
static int cnt = 0;      /* count of the number of moves */
 
int main(void) {
  int n;                /* number of disks */
 
  printf("디스크의 개수를 입력하세요 : ");
  fflush(stdin);
  scanf("%d", &n);
  assert(n > 0);
  move(n, 'A''B''C');
 
  return 0
}
 
void move(int n, char a, char b, char c) {
  if (n == 1)  {
    ++cnt;
    printf("%d : %c ==> %c\n", cnt, a, c);
  }
  else {
    move(n-1, a, c, b);
    ++cnt;
    printf("%d : %c ==> %c\n", cnt, a, c);
    move(n-1, b, a, c);
  }
}
cs


C/C++ 언어 하노이 탑/타워 예제




+ Recent posts