RE求助
查看原帖
RE求助
299859
Kirara_Magic楼主2020/11/11 17:32

测评情况

#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;

const int maxn=100005;
int la,lb,j;
int p[maxn];
char a[maxn],b[maxn];

int main()
{
	cin>>a+1>>b+1;
	la=strlen(a+1);
	lb=strlen(b+1);
//	printf("%d %d\n",la,lb);
	
	for(int i=2;i<=lb;++i)
	{
		while(j>0&&(b[j+1]!=b[i]))	j=p[j];
		if(b[j+1]==b[i])	++j;
		p[i]=j;
	}
	
	j=0;
	
	for(int i=1;i<=la;++i)
	{
		while(j>0&&(b[j+1]!=a[i]))	j=p[j];
		if(b[j+1]==a[i])	++j;
		if(j==lb)
		{
			printf("%d\n",i-lb+1);
			j=p[j];
		}
	}
	
	for(int i=1;i<=lb;++i)
		printf("%d ",p[i]);
	
	return 0;
}

照着模板打的,会RE QAQ

2020/11/11 17:32
加载中...