Towers of Hanoi

假设三根柱子分别为A B C,要将盘子由A搬到C,若只有一个盘子,直接搬到C即可,如果盘数超过两个,就按A->B、A ->C、B->C 来处理。

#include <stdio.h>

int sum = 0;
 
void hanoi(int n, char A, char B, char C) {
    
    
    sum++;
    if(n == 1) {
    
    
        printf("Move sheet %d from %c to %c\n", n, A, C);
    }
    else {
    
    
        hanoi(n-1, A, C, B);
        printf("Move sheet %d from %c to %c\n", n, A, C);
        hanoi(n-1, B, A, C);
    }
} 
 
int main() {
    
    
    int n;
    printf("Enter n: ");
    scanf("%d", &n);
    hanoi(n, 'A', 'B', 'C');
    printf("%d\n", sum);
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_18431031/article/details/105925750