題目描述
給定一個由n個圓盤組成的塔,這些圓盤按照大小遞減的方式套在第一根樁柱上。現要將整個塔移動到另一根樁柱上,每次只能移動一個圓盤,且較大的圓盤在移動過程中不能放置在較小的圓盤上面。
輸入格式
輸入由四行: 第一行是圓盤數量n(1<=n<=10); 第二行到第四行分別是三根樁柱的名字(字符串),n個盤子套在第一根樁柱上。
輸出格式
輸出移動步驟,每行輸出一步。
輸入樣例復制
在這里給出一組輸入。例如:
2
a
b
c
輸出樣例復制
在這里給出相應的輸出。例如:
a->b
a->c
b->c
#include <stdio.h>
void lbn(int n, char a[10], char c[10]) {
? ? printf("%s->%s\n", a, c);
}
void hanoi(int n, char a[10], char b[10], char c[10]) {
? ? if (n == 1) {
? ? ? ? lbn(n, a, c);
? ? }
? ? else {
? ? ? ? hanoi(n - 1, a, c, b);
? ? ? ? lbn(n, a, c);
? ? ? ? hanoi(n - 1, b, a, c);
? ? }
}
int main() {
? ? int n;
? ? char d[10], e[10], f[10];
? ? scanf("%d", &n);
? ? scanf("%s %s %s", d, e, f);
? ? hanoi(n, d, e, f);
? ? return 0;
}