把A杆上的盘子全部移到C杆上,并仍保持原有顺序叠好。
操作规则:每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上,操作过程中盘子可以置于A(起始柱)、B(辅助柱)、C(目标柱)任一杆上。
答案:
#include <stdio.h>
void Hanno_Tower(int n, char A, char B, char C)
{
if (n == 1)
{
printf("将编号为%d的盘子从%c柱子移动到%c柱子上\n", n, A, C);
}
else
{
Hanno_Tower(n - 1, A, C, B);
printf("将编号为%d的盘子从%c柱子移动到%c柱子上\n", n, A, C);
Hanno_Tower(n - 1, B, A, C);
}
}
int main()
{
int n = 0;
scanf("%d", &n);
Hanno_Tower(n, 'A', 'B', 'C');
return 0;
}