数据结构实验之串三:KMP应用
来源:互联网 发布:苹果系统mac系统下载 编辑:程序博客网 时间:2024/04/30 01:10
题目链接
#include<iostream>#include<algorithm>#include<cstring>using namespace std;const int maxn=100000000+1000;int next[maxn];int a[maxn], b[maxn];void getnext(int len)///寻找每个位置的最大公共子缀的长度{int i=0,j=-1;next[0]=-1;while(i<len){if(j==-1||b[i]==b[j]){i++;j++;next[i]=j;}else{j=next[j];}}}int kmp(int lena, int lenb, int p){ getnext(lenb); int i=p, j=0; while(i<lena&&j<lenb) { if(j==-1||a[i]==b[j]) { i++; j++; } else { j=next[j]; } } if(j==lenb) return i-lenb+1; else return -1;}int main(){ ios::sync_with_stdio(false); int n, m; while(cin>>n) { for(int i=0;i<n;i++) cin>>a[i]; cin>>m; for(int i=0;i<m;i++) cin>>b[i]; int x=kmp(n, m, 0);///需要判断两次,因为题意是是唯一确定的一对l和r; if(x!=-1) { int k=kmp(n, m, x+m-1); if(k==-1) cout<<x<<" "<<x+m-1<<endl;///输出的是数组下标,并不是数组值 else cout<<"-1"<<endl; } else cout<<"-1"<<endl; } return 0;}
0 0
- 数据结构实验之串三:KMP应用
- 数据结构实验之串三:KMP应用
- 数据结构实验之串三:KMP应用
- 数据结构实验之串三:KMP应用
- 数据结构实验之串三:KMP应用
- 数据结构实验之串三:KMP应用
- 数据结构实验之串三:KMP应用
- 数据结构实验之串三:KMP应用
- 数据结构实验之串三:KMP应用
- 数据结构实验之串三:KMP应用
- 数据结构实验之串三:KMP应用
- 数据结构实验之串三:KMP应用
- 数据结构实验之串三:KMP应用
- 数据结构实验之串三:KMP应用
- 数据结构实验之串三:KMP应用
- 数据结构实验之串三:KMP应用
- 数据结构实验之串三:KMP应用
- 数据结构实验之串三:KMP应用
- HDU 1722 Cake
- Android 6.0新特性之Runtime Permission
- ZeroMQ(ZMQ)函数接口英汉直译
- Android——ListView与适配器
- java常用IO流集合用法模板
- 数据结构实验之串三:KMP应用
- 杭电-1875 畅通工程再续(Kruscal)
- poj 2485 Highways ( prim )
- C++ Primer读书笔记:6.3~6.7
- assests文件下读取csv文件和图片
- poj-Flip Game
- hdoj1541 stars 树状数组
- js笔记
- (多校第五场1012)HDU5792 World is Exploding(树状数组)