鱼C论坛

 找回密码
 立即注册
查看: 2432|回复: 1

请问这要怎么修改

[复制链接]
发表于 2022-10-30 21:34:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
void MoveTower(int num, char src, char dst, char trs);
说明:参数 num 为金片数,src、dst 和 trs 分别为起始柱、目的柱和过渡柱。若金片数大于 0,则函数将金片组成的汉诺塔由起始柱利用过渡柱最终搬到目的柱,否则什么也不做。

下面的程序,输入汉诺塔圆片的数量,输出移动汉诺塔的步骤。

裁判程序
#include <stdio.h>

void MoveTower(int num, char src, char dst, char trs);

int main()
{
    int n;
    char s, d, t;
    scanf("%d %c %c %c", &n, &s, &d, &t);
    MoveTower(n, s, d, t);
    return 0;
}


答案:
void MoveTower(int num, char src, char dst, char trs)
{
        if(num==1)
        printf("%d: %c -> %c\n",src,dst,trs);
        else{
                MoveTower(num-1,src,trs,dst);
                printf("%d: %c -> %c\n",num,src,dst);
                MoveTower(num-1,trs,dst,src);
        }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-31 08:31:28 | 显示全部楼层
你这个汉罗塔的解决思路好像不太对,建议再看看小甲鱼的视频
代码:
#include <stdio.h>

void MoveTower(int num, char src, char dst, char trs);
int count; 

int main()
{
    int n;
    char s, d, t;
    scanf("%d %c %c %c", &n, &s, &d, &t);
    MoveTower(n, s, d, t);
    return 0;
}


void MoveTower(int num, char src, char dst, char trs)
{
        if(num==1){
                count++;
                printf("%d: %c -> %c\n",count,src,trs);
                }
        else{
                MoveTower(num-1,src,trs,dst);
                count++;
                printf("%d: %c -> %c\n",count,src,trs);
                MoveTower(num-1,dst,src,trs);
        }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-20 14:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表