#include<stdio.h>
void move(int,char,char,char);
int main()
{
//A、B、C分别代表三个柱子
char ch1 = 'A';
char ch2 = 'B';
char ch3 = 'C';
//n代表圆盘的个数
int n;
printf("请输入圆盘个数:");
scanf("%d",&n);
move(n,ch1,ch2,ch3);
return 0;
}
//将n个圆盘从x柱子借助y柱子移动到z柱子上
void move(int n,char x,char y,char z)
{
if(n == 1)
printf("圆盘编号%d:从%c移动到%c\n",n,x,z);
else
{
move(n-1,x,z,y);//first move n-1 from x to y
printf("圆盘编号%d:从%c移动到%c\n",n,x,z); //then move n form x to z;
move(n-1,y,x,z);//last move n-1 from y to z;
}
}
汉诺塔问题
最新推荐文章于 2020-03-11 11:46:32 发布