HDU1711 Number Sequence
来源:互联网 发布:网络性能指标并发 编辑:程序博客网 时间:2024/05/17 03:39
题目大意:给你两个序列a和b,让判断b是否是a的子串,如果是,找出在a中的位置,否则输出-1.
分析:裸KMP。
实现代码如下:
#include <cstdio>#include <cstring>#include <iostream>using namespace std;const int MAX=1000010;int next[10010],n,m;int a[MAX],b[10010];void init_next(){ int i=0,j=-1; next[0]=-1; while(i<m) { if(j==-1||b[i]==b[j]) { i++; j++; next[i]=j; } else j=next[j]; }}int solve(){ int i=0,j=0,ans=0; while(i<n) { if(j==-1||a[i]==b[j]) { i++;j++; } else j=next[j]; if(j==m) { ans=i+1; break; } } if(i==n&&j!=m) ans=m-1;//一直忘了加j!=m这句,老WA。。这是排除b正好是a的后缀。 return ans-m;}int main(){ int t; cin>>t; while(t--) { scanf("%d%d",&n,&m); for(int i=0;i<n;i++) scanf("%d",&a[i]); for(int i=0;i<m;i++) scanf("%d",&b[i]); init_next(); printf("%d\n",solve()); } return 0;}
0 0
- hdu1711 Number Sequence
- hdu1711 Number Sequence
- hdu1711 Number Sequence
- HDU1711:Number Sequence
- Number Sequence hdu1711 KMP
- hdu1711-Number Sequence
- hdu1711 Number Sequence
- hdu1711 Number Sequence,KMP
- hdu1711 Number Sequence (KMP)
- hdu1711 Number Sequence---KMP
- hdu1711 Number Sequence
- HDU1711 Number Sequence
- HDU1711 Number Sequence
- hdu1711 Number Sequence
- HDU1711-Number Sequence
- HDU1711 Number Sequence
- hdu1711 Number Sequence
- hdu1711 Number Sequence
- Spring MVC完成指南(三)国际化的支持:Spring MVC Velocity
- sql
- centos 6.5图形界面和命令行界面切换
- 不要忽视信噪比
- [ORACLE]BBED之基础篇
- HDU1711 Number Sequence
- springMVC 使用WebApplicationContext获取ApplicationContext对象
- GDI +发生一般性错误
- 理解矩阵(二)
- 学习新东西的基本套路
- ASP.NET Web API 简介
- Sublime Text 2 入门及技巧
- C#开发的较好的FTP类
- 自定义类可序列化