poj 3461 Oulipo kmp字符串匹配
2015-08-01 18:17
429 查看
//#include <iostream> #include <stdio.h> #include <string.h> using namespace std; //string a,b; char a[10000],b[1000000]; int asize,bsize; int kmp(){ int *pi = new int [asize]; pi[0] = -1; for(int i = 1,k = -1;i<asize;i++){ while(k>-1&&a[k+1] != a[i]) k = pi[k]; if(a[k+1] == a[i]) k++; pi[i] = k; } int result = 0; for(int i = 0,k = -1;i<bsize;i++){ while(k>-1&&a[k+1] != b[i]) k = pi[k]; if(a[k+1] == b[i]) k++; if(k == asize - 1){ result++; k = pi[k]; } } return result; } int main(){ int times; //cin >> times; scanf("%d",×); while(times--){ scanf("%s%s",a,b); asize = strlen(a); bsize = strlen(b); printf("%d\n",kmp()); //a.clear(); //b.clear(); //cin >> a >> b; //cout << kmp() << endl; } return 0; }
相关文章推荐
- Juniper srx防火墙NAT配置
- CooMark网页颜色取色表
- hdoj1276士兵队列训练问题
- eclipse 访问控制图标详解
- Redis 发布与订阅
- windows server2008下apache+php+mysql+memcache安装与配置
- java获取汉字拼音首字母
- IOS开发UI基础UITableView的属性
- WinSCP和PuTTY在刷openwrt固件的使用教程
- ajax跨域访问-jsonp报错:Uncaught SyntaxError: Unexpected token":"or"<"or"{"
- protocol buffer相关
- [python 笔记1] 输入输出
- 设计模式
- trie树及其应用
- Oracle数据库软件标准版的一个限制:只能用一个rman channel
- 《开源框架那些事儿26》:“最好的模板引擎”Beetl剖析及与Tiny模板引擎对比
- php-高级(过滤器 filter)
- eclipse package explorer视图中怎么让default package不显示?
- 查看android-support-v4.jar引出的问题
- CSS中一些特殊的上下文选择符的使用