永发信息网

c语言输出7个盘的汉诺塔解决方案

答案:1  悬赏:0  手机版
解决时间 2021-03-31 22:14
  • 提问者网友:饥饿走向夜
  • 2021-03-31 05:32
c语言输出7个盘的汉诺塔解决方案
最佳答案
  • 五星知识达人网友:舍身薄凉客
  • 2021-03-31 07:09
假设三根柱子A/B/C,要从A移动到B,有n个盘子,那么可以设函数
hanoi(int n,char A ,char B,char C);
其中:n是盘子数量,A,B,C是柱子名字
先考虑一个盘子的情况
一个盘子的时候,显然,A直接放到B就可以了
多个盘子的情况
如果多个盘子,那么不能直接从A放到B,但是可以借助C柱子
即,
1)先把n-1个盘子从A柱子借助B柱子放到C柱子;
2)把A放到B;
3)C上的n-1个盘子借助A放到B盘子
这样,完成了状态的转移
代码如下:
#include
void hanoi(int n,char A ,char B,char C)
{
    if(n==1)
        printf("%c->%c
", A,B);
    else{
        hanoi(n-1,A,C,B);
        printf("%c->%c
",A,B);
        hanoi(n-1,C,A,B);
    }
}
int main()
{
    int m;printf("input the number of diskes:");
    scanf("%d",&m);
    printf("The step to moving %d diskes:
",m);
    hanoi(m,'A','B','C');
    return 0;
}输入7,即可得到答案
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯