竞赛讨论区 > 请问为什么编译不了呀
头像
簪花郎
发布于 2021-04-20 22:10
+ 关注

请问为什么编译不了呀

#include <iostream>
#include<string>
#include<algorithm>
using namespace std;
//typedef long long ll;
//const int maxn=1e6+5;
int next[1000006];
void nextval(string t,int *next){
    int i,j;//int o,j;
    i=0,j=-1;//i=0,j=-1;
    next[0]=-1;
    while(i<t.length()){
        if(j==-1||t[i]==t[j]){
            ++i;
            ++j;
            //if(t[i]!=t[j])
            next[i]=j;
            //else next[i]=next[j];
        }
        else j=next[j];
    }
}
int kmp(string s,string t){
    int i=0;
    int j=0;
    nextval(t,next);
    i=0,j=0;
    int len1=s.length(),len2=t.length();
    while(i<len1&&j<len2){
        if(j==-1||s[i]==t[j]){
        ++i;
        ++j;
        }
        else j=next[j];
    }
    if(j>=t.length())
    return i-j;
    else return 0;
}
int main()
{
    //ababaaaba
    //fixprefixsuffix
    //abcdabc
    string t,s="";
    cin>>t;
    t+="A";
    nextval(t,next);
    int m=next[t.length()-1];
    //cout<<m<<endl;
    string f="";
    for(int i=0;i<m;i++)
    f=f+t[i];
    for(int i=m;i<=t.length()-5;i++)
    s=s+t[i];
    int ff=kmp(s,f);
    if(ff)cout<<f<<endl;
    else cout<<"Just a legend"<<endl;
    return 0;
}

全部评论

(1) 回帖
加载中...
话题 回帖

本文相关内容

等你来战

查看全部

热门推荐