三冬四夏会不会有点漫长 2024-01-14 21:25 采纳率: 91.7%
浏览 12
已结题

为什么这个程序我输入样例卡住不动了(语言-c语言)

为什么这个程序我输入样例卡住不动了

样例如下

img

#include<stdio.h>
#include<string.h>

int cnt1[30],cnt2[30];

int main()
{
    int t;
    scanf("%d",&t);
    
    while(t--)
    {
        int length,times;
        scanf("%d%d",&length,&times);
        char s1[1010],s2[1010];
        scanf("%s",s1);
        scanf("%s",s2);
        
        int l1=strlen(s1),l2=strlen(s2);
        for(int i=0;i<=l1;i++)
            cnt1[s1[i]-'a']++;
        for(int i=0;i<l2;i++)
            cnt2[s2[i]-'a']++;
        
        int m1=0,m2=0;
        for(int i=0;i<26;i++)    if(cnt1[i]>m1)    m1=cnt1[i];
        for(int i=0;i<26;i++)    if(cnt2[i]>m2)    m2=cnt2[i];
        
        if(m1+times>=length)    m1=length;
        if(m2+times>=length)    m2=length;
        
        if(m1>m2)    puts("Alice");
        else if(m1==m2)    puts("Draw");
        else    puts("Bob");
        
        memset(cnt1,0,sizeof cnt1);
        memset(cnt2,0,sizeof cnt2);
    }
    
    return 0;
}
  • 写回答

2条回答 默认 最新

  • AI算法蒋同学 2024-01-14 21:45
    关注

    在你的程序中,可能存在一些潜在的问题导致死循环。经过检查,我发现一个可能的问题是在统计字符出现次数时,数组越界。具体来说,这行代码可能导致问题:

    for(int i = 0; i <= l1; i++)
        cnt1[s1[i]-'a']++;
    

    数组 s1 的索引应该在 0l1-1 之间,而不是 0l1。修改这行代码如下:

    for(int i = 0; i < l1; i++)
        cnt1[s1[i]-'a']++;
    

    同样的修改也需要应用到第二个循环,以防止对数组 s2 进行越界访问:

    for(int i = 0; i < l2; i++)
        cnt2[s2[i]-'a']++;
    

    这样应该能够解决潜在的数组越界问题,避免陷入死循环。请尝试修改代码并再次运行看看是否问题得到解决。

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

报告相同问题?

问题事件

  • 系统已结题 1月22日
  • 已采纳回答 1月14日
  • 创建了问题 1月14日

悬赏问题

  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价
  • ¥15 在anaconda上pytorch和paddle paddle下载报错
  • ¥25 自动填写QQ腾讯文档收集表