hdu 5510 Bazinga (字符串水题)1/5

题目链接:https://vjudge.net/contest/265140#problem/B

题意很简单:输入n 然后输入n个字符串,求最大的i, 要求1 ~ i-1 中至少有一个串不是i的子串

思路:直接遍历就行,两个for循环嵌套(注意,都是自上而下开始),用strstr判断是不是子串,若是,就打上标记(此串相当于废弃了,即不需要再判断),这样就减少了对strstr的调用。针对这道水题的数据来说,这样做大大减少了时间,让我们逃出了TLE的泥沼

代码:

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

char ch[501][2002];
int main()
{
    int T;
    scanf("%d",&T);
    int n;
    for(int i=0 ; i<T; i++)
    {
        scanf("%d",&n);

        for(int j=0 ; j<n; j++)
        {
            scanf("%s",ch[j]);

        }
        int idx[501]= {};
        int ans=-1;
        int f=1;
        for(int l=1; l<n; l++)
        {

            for(int k=0 ; k<l; k++)
            {
                if(idx[k])
                    continue;
                if(!strstr(ch[l],ch[k]))
                {
                    ans=l+1;
                }
                else
                {
                    idx[k]=1;
                }
            }
        }
            printf("Case #%d: %d\n",i+1,ans);

    }


    return 0;
}

 

                                                                                                    每周 5篇解题报告的第一篇,写于2018.10.25

全部评论

相关推荐

点赞 评论 收藏
分享
有趣的牛油果开挂了:最近这个阶段收到些杂七杂八的短信是真的烦
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务