hdu1711 Number Sequence
来源:互联网 发布:图像语义分割 知乎 编辑:程序博客网 时间:2024/05/17 06:07
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1711
题解:KMP模版题
使用"输入外挂"时间缩短很多(484ms-->156ms)
"输入外挂":http://blog.csdn.net/niushuai666/article/details/6689043
#include <stdio.h> #include <string.h> #define MAXN 1000002 int next[10002],n,m; int str[MAXN],pattern[10002]; int Scan()// 该外挂适合纯数字输入{ int res = 0, ch, flag = 0; if((ch = getchar()) == '-') //判断正负 flag = 1; else if(ch >= '0' && ch <= '9') //得到完整的数 res = ch - '0'; while((ch = getchar()) >= '0' && ch <= '9' ) res = res * 10 + ch - '0'; return flag ? -res : res; } void getNext() { int i,j; i=0;j=-1; next[0]=-1; while(i<m) { if (j==-1||pattern[i]==pattern[j]) { i++; j++; next[i]=j; } else j=next[j]; } } int KMP() { int i,j; i=j=0; getNext(); while(i<n) { if(j==-1||str[i]==pattern[j]) { i++; j++; if(j==m) return i-j+1; } else j=next[j]; } return -1; } int main(){int test,i,ans;scanf("%d",&test);while (test--){scanf("%d %d",&n,&m);for(i=0;i<n;++i)//scanf("%d",&str[i]);str[i]=Scan();for(i=0;i<m;++i)//scanf("%d",&pattern[i]);pattern[i]=Scan();ans=KMP();printf("%d\n",ans);}return 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
- SIFT算法详解
- poj 2756 Autumn is a Genius(高精度加法)
- 聚类算法初探(六)OPTICS
- ARM体系学习一
- 音频数字低通滤波与带进位除法优化
- hdu1711 Number Sequence
- linux下的nmap程序简介
- iOS通过http post上传图片
- 学了点前端的总结
- Linux启动新进程的几种方法及比较
- Linux内核镜像格式
- CreateEx函数的窗口样式(来自http://technet.microsoft.com/zh-cn/subscriptions/czada357.aspx)
- Linux系统中的jdk安装配置
- Android 跳转应用市场的应用详情页