数据结构实验之串三:KMP应用
来源:互联网 发布:淘宝天猫优惠券好做吗 编辑:程序博客网 时间:2024/06/16 14:22
数据结构实验之串三:KMP应用
Time Limit: 1000MS Memory Limit: 65536KB
Submit Statistic
Problem Description
有n个小朋友,每个小朋友手里有一些糖块,现在这些小朋友排成一排,编号是由1到n。现在给出m个数,能不能唯一的确定一对值l和r(l <= r),使得这m个数刚好是第l个小朋友到第r个小朋友手里的糖块数?
Input
首先输入一个整数n,代表有n个小朋友。下一行输入n个数,分别代表每个小朋友手里糖的数量。
之后再输入一个整数m,代表下面有m个数。下一行输入这m个数。
Output
如果能唯一的确定一对l,r的值,那么输出这两个值,否则输出-1
Example Input
51 2 3 4 532 3 4
Example Output
2 4
Hint
Author
windream
#include <stdio.h>#include <string.h>int st1[2000000],st2[2000000],next[2000000],n,m;void nex(){ int i=0,j=-1; next[0]=-1; while(i<n-1) { if(j==-1||st1[i]==st1[j]) { i++; j++; next[i] = j; } else j=next[j]; }}int kmp(int x1,int x2){ if(n==0||m==0) return -1; nex(); int i=x1,j=x2; while(i<n&&j<m) { if(j==-1||st1[i]==st2[j]) { i++; j++; } else j=next[j]; } if(j==m) { return i-j+1; } else return -1;}int main(){ scanf("%d",&n); for(int i=0; i<n; i++) { scanf("%d",&st1[i]); } scanf("%d",&m); for(int i=0; i<m; i++) { scanf("%d",&st2[i]); } int t1=kmp(0,0); if(t1==-1) printf("-1\n"); else //尽量不要把第二次判断写在KMP函数中(没有终止边界?) { int t2=kmp(t1,0); if(t2==-1) printf("%d %d\n",t1,t1+m-1); else printf("-1\n"); } return 0;}
阅读全文
0 0
- 数据结构实验之串三:KMP应用
- 数据结构实验之串三:KMP应用
- 数据结构实验之串三:KMP应用
- 数据结构实验之串三:KMP应用
- 数据结构实验之串三:KMP应用
- 数据结构实验之串三:KMP应用
- 数据结构实验之串三:KMP应用
- 数据结构实验之串三:KMP应用
- 数据结构实验之串三:KMP应用
- 数据结构实验之串三:KMP应用
- 数据结构实验之串三:KMP应用
- 数据结构实验之串三:KMP应用
- 数据结构实验之串三:KMP应用
- 数据结构实验之串三:KMP应用
- 数据结构实验之串三:KMP应用
- 数据结构实验之串三:KMP应用
- 数据结构实验之串三:KMP应用
- 数据结构实验之串三:KMP应用
- [Travel]湖南长沙适合一日游的项目
- Phoenix的安装及JDBC访问
- opencv中SiftDescriptorExtractor所做的SIFT特征向量提取工作简单分析
- 编译open infrastructure platform
- Oracle报错,ORA-28001: 口令已经失效解决方法
- 数据结构实验之串三:KMP应用
- html之自定义插件升级版
- 读取本地数据库,和Couldn't read row 1, col -1 from CursorWindow. Make sure the Cursor报错
- Maven settings
- Git bash常用命令
- 欧拉函数值求解
- TabLayout关联ViewPager(滑动ViewPager,TabLayout会有横杠带颜色跟着滑动,可以设置字体颜色跟随滑动)
- nginx动态分离conf配置文件
- Java-BigDecimal用法