poj2752 kmp 模板题
2016-04-01 17:55
357 查看
1.当一个s[j]与p[i]失配时,跳转至s[next[j]],说明了s[0] ~s[next[j]]与s[j - next[j]] ~ s[j]这两段字符是相同的,想一想就懂了;
2.递归输出;
2.递归输出;
#include <stdio.h> #include <string.h> #include <iostream> using namespace std; int f[401000], len; char s1[401000]; void getfail() { f[0] = f[1] = 0; for(int i = 1; i < len; i++) { int j = f[i]; while(j && s1[j] != s1[i]) { j = f[j]; } f[i + 1] = s1[i] == s1[j] ? j + 1 : 0; } } void digui(int len) { if(len == 0) { return; } digui(f[len]); printf("%d ", len); } int main() { while(scanf("%s", s1) != EOF) { len = strlen(s1); getfail(); digui(len); printf("\n"); } }
相关文章推荐
- UIScrollView的delegate方法妙用之让UICollectionView滑动到某个你想要的位置
- HDU1896(优先队列的应用)
- 编程练习
- 为你的tableView的自定义cell加上圆角
- Fragment动态加载
- 效果实现案例1
- 学习RecyclerView控件
- varchar int 后面长度说明
- Linux kernel 3.10内核源码分析--进程上下文切换
- java学习第五天
- Debug与Release版本的区别
- 很多关于ios最新的文章及解决办法
- WebViewJavascriptBridge详细使用
- Android开发中经常会用到的功能代码
- 【Dialer】自定义暗码进入测试模式
- Redis实现分布式环境下的分布式锁机制
- iOS UIView Block动画
- 让自己的软件实现拖拽打开文件(使用WM_DROPFILES消息和DragQueryFile函数)
- Swift利用闭包(closure)来实现传值-->前后两个控制器的反向传值
- iOS开发——沙箱