hdu 2087 减花布条 kmp
2015-07-12 13:05
363 查看
#include<iostream> #include<cstring> using namespace std; char s1[1000005]; char s2[1005]; int p[10005]; int l1,l2; void init() { int i,j; i=0; l2 = strlen(s2); j=-1; p[0]=-1; while(i<l2) { if(j==-1||s2[i]==s2[j]) { p[++i]=++j; } else j=p[j]; } } int cot; void kmp() { int i,j; int l1,l2; l1=strlen(s1); l2=strlen(s2); i=-1; j=-1; while(i<l1) { if(j==-1||s1[i]==s2[j]) { i++; j++; } else { j=p[j]; } if(j==l2) { cot++; j=0; //避免重叠 } } } int main() { while(cin>>s1) { cot=0; if(s1[0]=='#') break; cin>>s2; init(); kmp(); cout<<cot<<endl; } }
相关文章推荐
- 精简点名APP设计介绍
- SELinux关闭和开启
- 怎样设置花生壳的端口映射
- C语言编程易错要点
- ioctl在socket中的一些用法及示例
- Redhat_Linux_9.0在vmware下不能上网的解决方法
- mysql必知必会(五)
- ZOJ Problem Set - 1092 Arbitrage (Floyd)
- The Skyline Problem
- Tortoise SVN的使用方法
- Hbase namespace问题
- 二叉堆实现
- 关于mac开机时的一些命令
- 微软官方Windows主题 英国之美2 Great Britain 高分辨率的壁纸
- 微软官方Windows主题 英国之美2 Great Britain 高分辨率的壁纸
- hdu 1285 确定比赛名次
- CSS3文字立体效果
- Android-动画
- 关于mac/linux下vim的语法高亮与行号显示!
- 55分钟学会正则表达式(纠正了翻译中的一些错误)