#include<stdio.h>
void hanoi(int n, char start, char middle, char target);
int main(void) {
int n = 5;
//s(n) = s(n-1) + s(n-1) +1
//s(n) + 1 = 2s(n-1) + 2
//s(n) + 1 = 2(s(n-1) +1)
//s(1)+1=2 s(n) = 2^n - 1
printf("%lld\n", (1LL << n) - 1);
char start = 'A';
char middle = 'B';
char target = 'C';
hanoi(n, start, middle, target);
}
void hanoi(int n, char start, char middle, char target) {
if (n == 1) {
printf("%c->%c\n", start, target);
return;
}
hanoi(n - 1, start, target, middle);
printf("%c->%c\n", start, target);
hanoi(n - 1, middle, start, target);
}
汉诺塔问题
最新推荐文章于 2024-07-30 00:40:15 发布