POJ3461 Oulipo
很裸的KMP题目,求模式串在母串中的匹配次数。
不过我最开始用的cin T了 /(ㄒoㄒ)/~~ mdzz
代码
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
char s[1000005],a[10005];
int t;
int next[10005];
void get_next(){
int l = strlen(a);
int i = 0, j = -1;
next[0] = j;
while(i != l){
if(j == -1 || a[i] == a[j])next[++i] = ++j;
else j = next[j];
}
}
void KMP(){
int i = 0, j = 0;
int cnt = 0;
int n = strlen(s), m = strlen(a);
while(i != n && j != m){
if(s[i] == a[j] || j == -1) ++i,++j;
else j = next[j];
if(j == m)cnt++, j = next[j];
}
cout << cnt << endl;
}
int main(){
cin >> t;
while(t--){
scanf("%s%s",a,s);
get_next();
KMP();
}
return 0;
}