Hanoi(汉诺)塔问题。这是一个古典的数学问题,是一个用递归方法解题的典型例子。问题是这样的 :古代有一个梵塔,塔内有3个座A,B,C。 开始时A座上有64个盘子,盘子大小不等, 大的在下,小的在上。有一个老和尚想把这64个盘子从A座移到C座,但规定每次只允许移动一个盘,且在移动过程中在3个座上都保持大盘在下,小盘在上。编程序输出移动盘子的步骤。
输入说明:输入n,n的范围1~10。
输出说明:每组输出后带两个空格间隔。
输入样例:
3
输出样例:
A->C A->B C->B A->C B->A B->C A->C
汉诺塔是一个递归,具体代码如下
#include<stdio.h>
void Hanoi(int n,char A,char B,char C)
{
if(n==1)
{
printf("%c->%c ",A,C);
}
else
{
Hanoi(n-1,A,C,B);
printf("%c->%c ",A,C);
Hanoi(n-1,B,A,C);
}
}
int main()
{
int n=0;
scanf("%d",&n);
Hanoi(n,'A','B','C');
return 0;
}
运行结果