标签:math iostream 串匹配 oid class highlight queue cstring 字符
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<queue>
using namespace std;
char s[400001];
int len,next[400001],sum[400001];
void get_next(int len){
int i=0,j=-1;
next[0]=-1;
while(i<len){
if((j==-1)||(s[i]==s[j])){
i++;
j++;
next[i]=j;
}
else{
j=next[j];
}
}
}
int main(){
while(scanf("%s",s)!=EOF){
int k=0;
len=strlen(s);
get_next(len);
for(int i=len;i!=0;){
sum[k++]=next[i];
i=next[i];
}
for(int i=k-2;i>=0;i--){
printf("%d ",sum[i]);
}
printf("%d\n",len);
}
return 0;
}
通过KMP算法来处理字符串匹配的问题。
最好用优化版的代码,适用面广--佚名。
POJ2752--Seek the Name, Seek the Fame
标签:math iostream 串匹配 oid class highlight queue cstring 字符
原文地址:https://www.cnblogs.com/xiongchongwen/p/11135499.html