kmp模板TLE70分求助
查看原帖
kmp模板TLE70分求助
537639
弓子瑞2011楼主2024/1/25 20:04

TLE70分求助

#include <bits/stdc++.h>
using namespace std;
char s[1000001],t[1000001];
int kmp[1000001],km;
int main(){
	scanf("%s%s",s,t);
	kmp[0]=kmp[1]=0;
	for(int i=1;i<strlen(t);i++){
		while(km&&t[i]!=t[km]) km=kmp[km];
		kmp[i+1]=t[i]==t[km]?++km:0;
	}
	km=0;
	for(int i=0;i<strlen(s);i++){
		while(km&&s[i]!=t[km]) km=kmp[km];
		km+=s[i]==t[km]?1:0;
		if(km==strlen(t)) printf("%d\n",i-strlen(t)+2);
	}
	for(int i=1;i<=strlen(t);i++) printf("%d ",kmp[i]);
	return 0;
}

评测记录

2024/1/25 20:04
加载中...