博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDOJ 2087
阅读量:6264 次
发布时间:2019-06-22

本文共 1090 字,大约阅读时间需要 3 分钟。

 思路: KMP

#include
#include
char a[1005], b[1005];int fail[1005];int lena, lenb;int cnt;void getfail(){ fail[0] = -1; int i, j; for(i = 1, j = -1; i < lenb; i ++) { while(j >= 0 && b[j + 1] != b[i]) { j = fail[j]; } if(b[j + 1] == b[i]) j ++; fail[i] = j; } return ;}void kmp(){ getfail(); int i, j; for(i = 0, j = 0; i < lena; i ++) { while(j && b[j] != a[i]) { j = fail[j - 1] + 1; } if(b[j] == a[i]) j ++; if(j == lenb) { cnt ++; if(i + lenb < lena) j = 0; else return ; } }}int main(int argc, char const *argv[]){ while(~scanf("%s", a) && strcmp(a, "#")) { scanf("%s", b); lena = strlen(a); lenb = strlen(b); cnt = 0; kmp(); printf("%d\n", cnt); memset(a, 0, sizeof(a)); memset(b, 0, sizeof(b)); } return 0;}

转载于:https://www.cnblogs.com/wangzhili/p/3950341.html

你可能感兴趣的文章
仿途牛导航
查看>>
CentOS 6.5下快速搭建ftp服务器[转]
查看>>
iOS多线程
查看>>
关于控制台程序和Win32程序
查看>>
JavaScript之tab面板切换
查看>>
Android自定义组件系列【3】——自定义ViewGroup实现侧滑
查看>>
08 分析函数
查看>>
Python日记——运算符和基础数据类型剖析
查看>>
What is a TensorFlow Session?
查看>>
Struts简介和配置
查看>>
编程疑难杂症の无法剔除的神秘重复记录
查看>>
传输方式
查看>>
Linux 进程间通信
查看>>
当鼠标点击label文字是光标跳到相应的input中
查看>>
mysql
查看>>
使用 IDEA 创建多模块项目
查看>>
java多态
查看>>
ffmpeg编译常规大全
查看>>
JS异步编程 XHR的用法
查看>>
poj2367 拓扑序
查看>>