本地能运行且样例正确,提交时编译失败。
查看原帖
本地能运行且样例正确,提交时编译失败。
1413040
Hayya楼主2024/12/8 23:32
#include<bits/stdc++.h>
using namespace std;
const int M=2e6+10;
char a[M],b[M];
int pi[M],index[M],top;
int main()
{
	ios::sync_with_stdio(false);
	cin>>a>>b;
	int lena=strlen(a),lenb=strlen(b);
	b[lenb]='#';
	strcat(b,a);
	int len=lena+lenb+1;
	pi[0]=0;
	for(int i=1;i<len;i++)
	{
		if(i==lenb)
		pi[i]=0;
		int l=pi[i-1];
		while(l!=0)
		{
			if(b[l]==b[i])
			{
				pi[i]=l+1;
				break;
			}
			else
			l=pi[l-1];
		}
		if(!pi[i])
		{
			if(b[i]==b[0])
			pi[i]=1;
			else
			pi[i]=0;
		} 
		if(pi[i]==lenb)
		index[++top]=i-lenb*2+1;
	}
	for(int i=1;i<=top;i++)
	cout<<index[i]<<endl;
	for(int i=0;i<lenb;i++)
	cout<<pi[i]<<" ";
	return 0;
}
2024/12/8 23:32
加载中...