Oulipo POJ - 3461

裸的KMP
代码如下:
#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
#include <algorithm>
using namespace std;

const int maxn=1000000+10;
int arrnext[maxn],lenT,lenW;
char W[maxn],T[maxn];

void creatnext(char *W)
{
    int i=0,j=-1;
    arrnext[0]=-1;
    lenT=strlen(T);
    while(i<lenT)
    {
        if(j==-1||W[i]==W[j])
        {
            i++;
            j++;
            arrnext[i]=j;
        }
        else j=arrnext[j];
    }
}

int KMP(char *W,char *T)
{
    int cnt=0,i=0,j=0;
    lenW=strlen(W);
    while(i<lenT)
    {
        if(j==-1||T[i]==W[j])
        {
            i++;
            j++;
        }
        else j=arrnext[j];
        if(j==lenW)
        {
            cnt++;
           // j=arrnext[j];
        }

    }
    return cnt;
}

int main()
{
    int kase;
    cin >> kase;
    while(kase--)
    {
        scanf("%s %s",W,T);
        creatnext(W);
        cout << KMP(W,T) << endl;
    }
    return 0;
}
这题第一次超时了,后来想了想应该是用cin输入输出导致,完全换成c的写法就过了,如果关了cin 和 scanf同步时间差不多也能ac.另外数组名起为next竟然不可以,应该是此变量和一些已经写好的某些函数类等重名。


全部评论

相关推荐

05-14 16:55
广州大学 Java
面试情况25届双非本科,有&nbsp;ACM&nbsp;竞赛经历,两段实习(小厂&nbsp;+&nbsp;独角兽)。以下为2024年11月到次年5月的春招及其补录面试情况,若对个人秋招经历感兴趣,可查看另一篇置顶文章。通过某区级供水国企汇丰科技:线上行为测评&nbsp;→&nbsp;Coding&nbsp;测试&nbsp;→&nbsp;线下技术&nbsp;&amp;&nbsp;HR&nbsp;面东方财富:一、二轮线上面,三轮线下技术面招银科技:一轮线上技术,二轮、三轮线下技术和HR元戎启行:三轮技术面&nbsp;+&nbsp;HR&nbsp;面,一共四面面试挂拼多多:客户端,三轮技术面挂,手撕没撕出来4399:一轮技术面挂微派:一轮技术面挂,手撕没撕出来以下是个人无意向故提前主动终止流程,以免影响其他候选人广州农商银行:线下笔试,一轮面试...
isjsns:同双非本,最后的总结那块挺赞同的,我们计院的就业数据也就那样,年包二十到四十万的人也有,但少之又少,周围有认识的地信和电子的也有二到四十万的,找的还不错的包括我基本都是春招才找到的,个人是感觉春招机会挺多的,也可能是像楼主一样年初又找了个实习加技术又沉淀了一波的原因,本来秋招结束都想摆了,最后还是熬出来了大家别放弃啊,双非本也有翻身的机会的
点赞 评论 收藏
分享
SHC2:关键问题是你这三段实习是三个不同的岗位…你这样子秋招就是只有一段实习的本科生..
点赞 评论 收藏
分享
三题看不懂四题不明白二题无法AC&nbsp;T=int(input())&nbsp;for&nbsp;_&nbsp;in&nbsp;range(T):&nbsp;n=int(input())&nbsp;s=input().split()&nbsp;k,mx=1,1&nbsp;for&nbsp;i&nbsp;in&nbsp;range(len(s)-1):&nbsp;if&nbsp;len(s[i])&lt;len(s[i+1]):&nbsp;k+=1&nbsp;elif&nbsp;len(s[i])==len(s[i+1]):&nbsp;if&nbsp;s[i]&lt;=s[i+1]:&nbsp;k+=1&nbsp;...
恭喜臭臭猴子:第二题用栈就行。合法的括号直接出栈了,剩下的是不合法的,肯定都得一个一个走。出入栈的过程中得记下进栈的括号的下标。最后栈里剩下的括号如果相邻两个的下标不连续,说明它们中间有一个合法的括号序列被出栈,结果加一
投递拼多多集团-PDD等公司10个岗位 > 拼多多求职进展汇总 笔试
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务