求助. . 为啥一直re啊. ..
查看原帖
求助. . 为啥一直re啊. ..
11713
296966943lzy楼主2020/7/19 16:24

能改的都改了,本机测试数据都能过,但是提交从上午re到现在QwQ

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int n,m;
char s1[100001],s2[100001];
int Next[100001],ii=0,jj=0;
inline void FindNext()
{
    Next[0]=Next[1]=0;
    for(ii=1;ii<n;ii++)
    {
        for(;jj>0&&s1[ii]!=s1[jj];jj=Next[jj]); 
        if(s1[ii]==s1[jj])jj++;
        Next[ii]=jj;
    }
}
inline int Find_string()
{

	jj=-1; 
	for(ii=0;ii<m;ii++)
	{
		for(;(jj>0)&&(s1[jj+1]!=s2[ii]);)jj=Next[jj];//cout<<jj<<' ';
		if(s1[jj+1]==s2[ii])jj++;
		if(jj==n-1) 
		{
            //cout<<ii<<' '<<jj<<endl;
			cout<<ii-jj+1<<endl;
			//cout<<a1<<' '<<b1<<' '<<i-j+1<<' '<<a[yu]<<endl;
			jj=Next[jj];
		}
    }
}
int main()
{
    //freopen("a.in","r",stdin);
	//memset(head,-1,sizeof(head));
	//cin>>n>>m;
    scanf("%s%s",s2,s1);
    n=strlen(s1);
    m=strlen(s2);
    FindNext();
    Find_string();
    //cout<<n<<' '<<m<<endl;
    for(int i=0;i<n;i++)cout<<Next[i]<<' ';
    cout<<endl;
    return 0;
}
2020/7/19 16:24
加载中...