【KMP】 HDOJ 1711 Number Sequence
2014-06-27 16:51
344 查看
KMP模板题。。
#include <iostream> #include <sstream> #include <algorithm> #include <vector> #include <queue> #include <stack> #include <map> #include <set> #include <bitset> #include <cstdio> #include <cstring> #include <cstdlib> #include <cmath> #include <climits> #define maxn 1000005 #define eps 1e-6 #define mod 10007 #define INF 99999999 #define lowbit(x) (x&(-x)) #define lson o<<1, L, mid #define rson o<<1 | 1, mid+1, R typedef long long LL; using namespace std; int t[maxn], p[10005]; int next[10005]; int n, m; void read(void) { int i; scanf("%d%d",&n,&m); for(i=0;i<n;i++) scanf("%d",&t[i]); for(i=0;i<m;i++) scanf("%d",&p[i]); } void get(void) { next[0]=next[1]=0; int i, j; for(i=1;i<m;i++){ j=next[i]; while(j && p[i]!=p[j]) j=next[j]; next[i+1]= p[i]==p[j] ? j+1 : 0; } } void kmp(void) { int i, j; for(i=0, j=0;i<n;i++){ while(j && t[i]!=p[j]) j=next[j]; if(t[i]==p[j]) j++; if(j==m){ printf("%d\n", i+2-m); return; } } printf("-1\n"); } int main(void) { int _; while(scanf("%d",&_)!=EOF){ while(_--){ read(); get(); kmp(); } } }
相关文章推荐
- hdoj1711-- Number Sequence(KMP模板)
- [HDOJ 1711] Number Sequence [KMP]
- hdoj 1711 Number Sequence 【KMP 入门--晕晕滴】
- hdoj 1711 Number Sequence【kmp(数字数组)】
- hdoj 1711 Number Sequence 【kmp】
- hdoj-1711 Number Sequence(数组Kmp)
- HDOJ-1711 Number Sequence (kmp模板)
- HDOJ 1711 Number Sequence(KMP)
- hdoj1711(KMP模板题)Number Sequence
- HDOJ 1711 Number Sequence ——KMP
- HDOJ 1711 Number Sequence (KMP)
- HDOJ1711 Number Sequence(KMP)
- hdoj 1711 Number Sequence 【KMP】
- hdoj 1711 Number Sequence 【KMP】
- 匹配串HDOJ 1711 Number Sequence(KMP)
- HDOJ---1711 Number Sequence[KMP模版]
- HDOJ1711 Number Sequence(kmp)
- HDOJ1711(Number Sequence)
- HDU 1711 Number Sequence (kmp)
- hdu 1711 Number Sequence(KMP)