【hiho一下 第三周】KMP算法
2017-10-04 18:44
369 查看
【题目链接】:http://hihocoder.com/problemset/problem/1015
【题意】
【题解】
把f数组,len1,len2数组一开始全都定义成char型
这酸爽.
【Number Of WA】
3
【完整代码】
#include <cstdio> #include <cstring> #include <cmath> #include <iostream> using namespace std; #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 #define LL long long #define rep1(i,a,b) for (int i = a;i <= b;i++) #define rep2(i,a,b) for (int i = a;i >= b;i--) #define mp make_pair #define pb push_back #define fi first #define se second #define ms(x,y) memset(x,y,sizeof x) typedef pair<int,int> pii; typedef pair<LL,LL> pll; const int dx[9] = {0,1,-1,0,0,-1,-1,1,1}; const int dy[9] = {0,0,0,-1,1,-1,1,-1,1}; const double pi = acos(-1.0); const int N = 1e6+100; char s1 ,s2 ; int f ,len1,len2; int main() { //freopen("F:\\rush.txt","r",stdin); int t; cin >> t; while (t--) { int ans = 0; scanf("%s",s1); scanf("%s",s2); len1 = strlen(s1),len2 = strlen(s2); f[0] = f[1] = 0; rep1(i,1,len1-1) { int j = f[i]; while (j && s1[i]!=s1[j]) j = f[j]; f[i+1]=(s1[i]==s1[j])?(j+1):0; } int j = 0; rep1(i,0,len2-1) { while (j && s2[i]!=s1[j]) j = f[j]; if (s2[i]==s1[j]) { j++; if (j==len1) { ans++; j = f[j]; } } } cout << ans << endl; } return 0; }
相关文章推荐
- (hiho一下第三周)#1015 KMP算法 【模版】
- 【hiho一下】第三周 KMP算法
- hiho一下 第三周 Hiocoder #1015 : KMP算法
- hiho一下 第三周---KMP算法
- hiho一下第三周 kmp算法。
- hiho hiho一下第三周 #1015 : KMP算法
- 【hiho一下第三周】KMP计算模式串在原串出现次数
- hiho一下~week_3 KMP算法
- hiho一下 第三周 "KMP"算法
- hiho一下 第三周
- hiho一下第3周#1015 : KMP算法
- hiho第三周——字符串匹配KMP算法
- hiho一下 第九十周 Swimming Plans
- hiho一下 第四十四周 博弈游戏·Nim游戏(直接公式解)
- hiho一下第二周#1014 : Trie树
- hiho一下 第四十九周 -题目1 : 欧拉路·一
- hiho一下 第五十周 欧拉路·二 (Fleury算法求欧拉路径)
- hiho一下 第162周 回文字符串
- hiho一下 第二周 trie树
- 【hiho一下 第八周】状态压缩·一