汉诺塔问题进阶无法正确完成要求

这是题目

img


这是我测试和提交的过程

img

img


img

我觉得自己写的没有什么错误,但是检测结果老是错了 大家看一下哪一步出了问题

你的代码贴出来啊,我写了一个代码,你用我这个试试吧:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

int idb[20]={0}, idc[20]={0}, idd[20]={0};    //每个柱子上最上面的盘子的编号
int nmbb = 20, nmbc = 0, nmbd = 0;            //每个柱子上的盘子数量

char g_b, g_c, g_d;  //三个柱子的编号

void move(char x, char y)
{
    int id;
    if (x == g_b)
    {
        id = idb[nmbb - 1];
        nmbb--;//盘子数量-1
        printf("%c->%d->%c\n", x, id, y);
        //记录盘子的编号
        if (y == g_c)
            idc[nmbc++] = id;
        else
            idd[nmbd++] = id;
    }
    else if (x == g_c)
    {
        id = idc[nmbc - 1];
        nmbc--;
        printf("%c->%d->%c\n", x, id, y);
        //记录盘子的编号
        if (y == g_b)
            idb[nmbb++] = id;
        else
            idd[nmbd++] = id;
        
    }
    else
    {
        id = idd[nmbd - 1];
        nmbd--;
        printf("%c->%d->%c\n", x, id, y);
        //记录盘子的编号
        if (y == g_b)
            idb[nmbb++] = id;
        else
            idc[nmbc++] = id;
    }
}
void hanio(int n, char b, char c, char d)
{
    if (1 == n)
    {
        move(b, d);
    }
    else
    {
        hanio(n - 1, b, d, c);
        move(b, d);
        hanio(n - 1, c, b, d);
    }
}

int main()
{
    int n = 0;
    int i;
    
    //char b, c, d;
    scanf("%d %c %c %c", &n, &g_b, &g_c, &g_d);
    //初始盘子编号
    nmbb = n;
    for (i = 0; i < n; i++)
        idb[i] = n-i;
    hanio(n, g_b, g_d, g_c);  //从最左边柱子移动到中间的柱子上
    return 0;
}



您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632