[HDU1711]KMP模板
2017-05-08 20:09
351 查看
解题关键:1、直接套kmp模板即可,注意最后输出的位置,需要在索引的位置+1。
2、next用作数组名在oj中会编译错误,
3、选用g++,只有g++才会接受bits/stdc++.h
OJ中g++和c++的区别:
1、输出double类型时,如果采用G++提交,scanf采用%lf,printf采用%f,否则会报错
2、使用GCC/G++的提醒:
对于64位整数, long long int 和 __int64 都是支持并且等价的.但是在读和写的时候只支持scanf("%
I64d", ...)和printf("%I64d", ...).
不支持"%lld"是因为MinGW下的GCC和G++使用的msvcrt.dll动态链接库并不支持C99标准.
根据ISO C++标准,在G++下,main函数的返回值必须是int,否则将会导致Compile Error(编译错误)的判答
3、G++/GCC使用scanf、printf时注意引用<stdio.h>,只引用<iostream>不识别
#include<bits/stdc++.h> #define N 1000002 using namespace std; typedef long long ll; int Next ; int s ,t ; int slen,tlen; int n,m; void getNext(){ int i=0,j=-1; Next[0]=-1; while(i<tlen){ if(j==-1||t[i]==t[j]) Next[++i]=++j; else j=Next[j]; } } int kmp(){ getNext(); int i=0,j=0; while(i<slen&&j<tlen){ if(j==-1||s[i]==t[j]) ++i,++j; else j=Next[j]; } if(j==tlen) return i-j+1; else return -1; } int main(){ ios::sync_with_stdio(0); int tt; cin>>tt; while(tt--){ int n,m; cin>>n>>m; for(int i=0;i<n;i++){ cin>>s[i]; } for(int i=0;i<m;i++){ cin>>t[i]; } slen=n; tlen=m; cout<<kmp()<<endl; } }
#include<bits/stdc++.h> #define N 1000000 using namespace std; typedef long long ll; char s ,t ; int Next ; int slen,tlen; void getNext(){ int i=0,j=-1;//注意写next数组时j为-1 Next[0]=-1; while(i<tlen){ if(j==-1||t[i]==t[j]) Next[++i]=++j; else j=Next[j]; } } int kmp_index(){ getNext(); int i=0,j=0; while(i<slen&&j<tlen){ if(j==-1||s[i]==t[j]) i++,j++; else j=Next[j]; } if(j==tlen) return i-j; else return -1; }
int kmp_count(){ int ans=0,i=0,j=0; getNext(); for(i=0;i<slen;i++){ while(j>0&&s[i]!=t[j]) j=Next[j]; if(s[i]==t[j]) j++; if(j==tlen){ ans++; j=Next[j]; } } return ans; }
相关文章推荐
- hdu1711 KMP模板
- [kmp] hdu1711 字符串匹配模板
- hdu1711 (Number Sequence) KMP模板
- hdu1711 记录一个kmp模板
- kmp模板 hdu1711
- HDU1711 模板题-KMP
- HDU1711 Number Sequence【机智 or KMP模板】
- hdu1711(kmp纯模板)
- hdu1711(kmp纯模板)
- Hdu 1711 Number Sequence ( KMP 模板题)
- HDU 2594 扩展kmp模板题
- P3375 【模板】KMP字符串匹配
- hdu 1686 Oulipo (KMP模板)
- poj3461 kmp模板题
- KMP最常用的模板
- 字符串模板总结(三):KMP
- KMP模板
- HDU 1686Oulipo (kmp模板题)
- Codeforces Round #269 (Div. 2)-D. MUH and Cube Walls,KMP裸模板拿走!
- POJ Oulipo(KMP模板题)