poj_3461 Oulipo(KMP:找出所有模式串)
2016-02-04 11:52
323 查看
本题就是经典的模式串匹配问题,只需要对上文中的程序稍作修改即可。(hihoCoder上的KMP算法一题,与本题一模一样)
#include <stdio.h> #include <string.h> void getNext(char t[], int next[]) { int i=0, j=-1, tLen=strlen(t); next[i]=j; while (i<tLen) if (j==-1 || t[i]==t[j]) { i++;j++; if (t[i]!=t[j]) next[i]=j; else next[i]=next[j]; } else j=next[j]; } int kmpMain(char s[], char t[], int next[], int pos) { int i=pos, j=0, sLen=strlen(s), tLen=strlen(t),total=0; while (i<sLen) { if (j==-1 || s[i]==t[j]){i++; j++;} else j=next[j]; if (j==tLen) {total++; j=next[j];} //修改的地方 } return total; } int main() { char w[10001],t[1000001]; int n,i,next[10001]; scanf("%d",&n); for (i=0;i<n;i++) { scanf("%s",w); scanf("%s",t); getNext(w,next); printf("%d\n",kmpMain(t,w,next,0)); } return 0; }
相关文章推荐
- 记不住就存下来---- HTML 5 新增常用属性 之 语法相关元素
- lucene各版本jar包下载地址
- EditTextUtil 监听输入字数
- Python类的__getitem__和__setitem__特殊方法
- 二、MongoDB的高级查询(聚合、游标、管道、索引)
- Win10 UWP开发系列:实现Master/Detail布局
- (五)activiti开发的几点思路
- Ubuntu 14.04lts安装vncserver
- ___72___OleDbCommand向Access中插入数据
- 怎样理解阻塞非阻塞与同步异步的区别?
- Git----提交的注意事项及参考资料罗列
- android项目构建过程
- SDK(ios)
- ACM进阶计划
- Android使用文件保存数据,采用比特流保存(解决“\n”无效)
- mongoDB学习(三)--索引操作
- nl 命令
- 02-连连看-用例分析
- 在 Rails 中使用 Webpack
- JQuery获取元素的值与属性