求怎么编程这道题,求大神,C++汉诺塔问题
题目描述汉诺塔问题:三个塔座分别为A、B、C,在A塔上有10个盘子(上面是小盘子,下面是大盘子,分别编号为1~10),每次移动一个盘子,并且不能够将大盘子放在小盘子上,用...
题目描述
汉诺塔问题:三个塔座分别为A、B、C,在A塔上有10个盘子(上面是小盘子,下面是大盘子,分别编号为1~10),每次移动一个盘子,并且不能够将大盘子放在小盘子上,用符合上述移动盘子的规则将这10个盘子从A塔上移动到C塔上,请问第n(n<=1024)次,是几号盘子从哪个塔座移动到哪个塔座。
输入描述
一个整数n,代表当前的移动次数
输出描述
三个信息:分别是盘子号、源塔座、目标塔座,他们之间用空格隔开
输入样例
2
输出样例
2 A C 展开
汉诺塔问题:三个塔座分别为A、B、C,在A塔上有10个盘子(上面是小盘子,下面是大盘子,分别编号为1~10),每次移动一个盘子,并且不能够将大盘子放在小盘子上,用符合上述移动盘子的规则将这10个盘子从A塔上移动到C塔上,请问第n(n<=1024)次,是几号盘子从哪个塔座移动到哪个塔座。
输入描述
一个整数n,代表当前的移动次数
输出描述
三个信息:分别是盘子号、源塔座、目标塔座,他们之间用空格隔开
输入样例
2
输出样例
2 A C 展开
展开全部
#include<stdio.h>
move(int n,int x,int y,int z)
{
if(n==1)
printf("%c-->%c\n",x,z);
else
{
move(n-1,x,z,y);
printf("%c-->%c\n",x,z);
move(n-1,y,x,z);
}
}
main()
{
int h;
printf("\ninput number:\n");
scanf("%d",&h);
printf("the step to moving %2d diskes:\n",h);
move(h,'a','b','c');
}
这是C的,如果一定要C++,就把输出输入改成cout,cin好了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询