poj 3461 主要是内附有讲原理与方法的博客和视频!
来源:互联网 发布:开农村淘宝怎么赚佣金 编辑:程序博客网 时间:2024/05/16 14:12
poj 3461
我就不写博客了,刚开始学CS水平有限,KMP确实有点儿复杂。
现在,我心里是完全清楚了,但还得沉淀一段时间吧~
[方法参考]是B站的一个视频,外国小哥讲得超级超级简洁!!!
我按照他讲得,代码一下子就实现了!!!
原理参考:
前人写的博客讲得贼老好!!
前人写的博客讲得特别棒!!
注意:各种教材、各个博客,使用的下角标都没有统一标准。原理理解就好,不要太拘泥于角标什么的!
方法参考:
真的、doge都能听懂!!可以先按方法实现一次,再学习原理会有更深的理解!!
我的代码:
#include "cstring"#include "cstdio"using namespace std;char P[10005],S[1000005];int Next[10005],P_len,S_len;void Get_Next(){ int j=0,i=1; Next[0]=0; while(i<P_len){ if(P[j]==P[i]){ Next[i++]=++j;} else{ while(1){ if(j==0&&P[j]!=P[i]){ Next[i++]=0;break;} else{ j=Next[j-1]; if(P[j]==P[i]){ Next[i++]=++j;break;}}}}}}int KMP(){ int i=0,j=0,flag=0; while(i<S_len){ while(j<P_len&&i<S_len){ if(P[j]==S[i]) j++,i++; else if(j==0&&P[j]!=S[i]) i++; else j=Next[j-1];} if(j==P_len) flag++,j=Next[j-1];} return flag;}int main(){ int n,answer; scanf("%d",&n); while(n--) { scanf("%s%s",P,S); P_len=strlen(P); S_len=strlen(S); Get_Next(); answer=KMP(); printf("%d\n",answer); } return 0;}
注意:主串、模式串长度strlen()一次用变量保存下来,不要在循环中每次都strlen()。
阅读全文
0 0
- poj 3461 主要是内附有讲原理与方法的博客和视频!
- OpenPLC--可编程控制器的发展趋势[本博客注:内容主要是关于PLC的开放性与现状]
- 这个网站不错。主要是讲控件的。
- 这个文章主要是讲Android开发的四大组件
- 决定开始写blog了,主要是视频开发,电子教学,和c++方面的内容
- 初次登陆CSDN,在这里开的博客主要是学习和发牢骚用。
- 8月31日,主要讲解的是方法和方法的调用
- 视频网站的前、后台开发技术主要是哪些?
- 进程和程序的主要区别是
- 第一篇CSDN的博客,总的来说主要是写关于Mstar手机平台的总结和回顾!
- 16讲项目实战详细页制作及与首页和内页的链接添加
- 科普:论文上附有的 arXiv 是干嘛的
- tableView代理方法的调用时间,(主要是heightForRowAtIndexPath和cellForRowAtIndexPath调用时间)
- jsp内嵌各种视频的方法
- 本博客内文章的搜索方法
- caffe 主要是讲一下caffe对不同的数据类型的处理(二)
- How to Build A Low Cost SAN(主要是讲AOE的)
- android中的所有activity间动画跳转(主要讲的是anim)
- cmmi |关于cmmi开发人员访问记录
- 超声波模块工作原理分析及程序
- 搜索专题总结
- HDU6185 Covering(矩阵快速幂)
- sizeof——类和结构体
- poj 3461 主要是内附有讲原理与方法的博客和视频!
- 汉诺塔问题
- 319. Bulb Switcher
- Auto-encoder by forest
- 实验三 单链表的定义及实现
- 最小生成树-- 解析与模板
- libevent源码学习-----event_base事件循环
- TB级别数据排序问题
- MySQL的表中使用index作为字段名时存在的问题