the_great_crab 2023-11-04 09:38 采纳率: 75%
浏览 10
已结题

关于判断字符串是否能够合并的问题

img


求问这个问题如何用c语言编程解决!因为递归方法时间复杂度太高,请用动态规划方法,谢谢!

  • 写回答

4条回答 默认 最新

  • threenewbee 2023-11-04 10:10
    关注
    #include <stdio.h>
    
    int canconcat(char *s1, char *s2, char * s3)
    {
        int r1 = 0, r2 = 0;
        if (*s3 == 0 && (*s1 || *s2)) return 0;
        if (*s1 == 0 && *s2 == 0) return 1;
        if (*s1 != 0 && *s1 == *s3)
        {
            r1 = canconcat(s1 + 1, s2, s3 + 1);
        }
        if (*s2 != 0 && *s2 == *s3)
        {
            r2 = canconcat(s1, s2 + 1, s3 + 1);
        }
        if (*s1 == 0 && *s2 != 0)
            return r2;
        if (*s1 != 0 && *s2 == 0)
            return r1;
        return r1 || r2;
    }
    int main()
    {
        int n;
        scanf("%d", &n);
        for (int i = 0; i < n; i++)
        {
            char s1[201], s2[201], s3[402];
            scanf("%s%s%s", s1, s2, s3);
            if (canconcat(s1, s2, s3))
                printf("yes\n");
            else
                printf("no\n");
        }
        return 0;
    }
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 11月18日
  • 已采纳回答 11月10日
  • 修改了问题 11月4日
  • 创建了问题 11月4日

悬赏问题

  • ¥15 模块化生产的路径规划哪种算法更合适?
  • ¥15 如何在animate html5文档任意位置实现文本输入功能?
  • ¥15 电机正反转电路设计中,mos管的关断问题,求原因。
  • ¥15 关于#sql#的问题:怎么找出所有同时多张有效保单的车架号
  • ¥15 KFC账号下单提示拒绝操作
  • ¥20 HC32F460串口发送仅能接到一个数据
  • ¥15 求解答一下是否可以修改一个软件运行时生成的文件内部内置的文件创建时间?
  • ¥20 WIN10蓝屏问题!
  • ¥15 Mac经常自动关机,再次打开后提示“电脑因出现问题而重新启动”
  • ¥60 使用ovito软件怎么得到金属玻璃的自由体积