2015ACM四川省赛C题

来源:互联网 发布:tomcat 1099端口被占用 编辑:程序博客网 时间:2024/04/28 01:54

//这题很值得记录,很有收藏价值,我都是看别人的代码会的。以后再回来看看。

AC代码:

#include<stdio.h>#include<string.h>#define max 10000005char s[max];char t[max];char a[max];int next[max];int len1;int len2;int pre[max];void get_next(){    int i=0;    int j=-1;    next[0]=-1;    while(i<len1)    {        if(j==-1||t[i]==t[j])        {            i++;            j++;            next[i]=j;        }        else        {            j=next[j];        }    }}int main(){    while(scanf("%s%s",t,s)!=EOF)    {        memset(next,0,sizeof(next));        len1=strlen(t);        len2=strlen(s);        get_next();        int i,j=0,k=0;        for(i=0;i<len2;i++,k++)        {            a[k]=s[i];            while(j>0&&s[i]!=t[j])            {                j=next[j];            }            if(s[i]==t[j])            {                j++;            }            if(j==len1)            {                k-=len1;                j=pre[k];            }            a[k+1]=0;            pre[k]=j;        }        printf("%s\n",a);    }    return 0;}


0 0
原创粉丝点击