HDU-3736(KMP_循环节)
来源:互联网 发布:凸轮机构设计软件 编辑:程序博客网 时间:2024/05/20 03:07
这道题目也是运用next值的一道题目,我发现,运用next[]的题目真的很多,,,
今天也是搞了一天的next函数了....懂是有些懂了,.,,但是猛地把自己的原来的编程习惯变了 还 是有点不适应的,,
但是确实两种理解方法都可以,,但是 还是现在用的这个getnext好用一些,,自己可以做出简单的证明,
而这道题目,就是让你求不能重复利用的最大循环节是多少,
可以利用最后一个的后一个next值算处理,,其实大家都知道next保留的值就是前面的最长字母序列数.
求出来循环节之后,剩下的就好说了.
大家看看代码,我也参考了我的一位学长的代码的
#include <stdio.h>#include <string.h>#include <stdlib.h>#include <math.h>char pat[100005];int next[100005];int len;int getnext(){int i=1,j=0;next[1]=0;while(i<=len){if(j==0||pat[i]==pat[j]){i++,j++;next[i]=j;}elsej=next[j];}return next[len+1];}int main(){int T;scanf("%d",&T);while(T--){scanf("%s",pat+1);pat[0]='#';len=strlen(pat)-1;int temp=getnext();//printf("%d\n",temp);int ans=len-(temp-1);//temp-1 是循环节printf(len>ans&&len%ans==0?"0\n":"%d\n",ans-len%ans);}return 0;}
- HDU-3736(KMP_循环节)
- KMP_小白解说
- hdu 1005 循环节
- HDU 5970 (循环节)
- hdu 3221 (指数循环节)
- HDU 1005 循环节查找
- HDU 3746 kmp循环节
- HDU 5690 (分治 || 循环节)
- hdu 1358 KMP循环节
- hdu 5475 LCS [循环节]
- hdu 6038 Function 循环节
- 【循环节】HDU 1005 and HDU 1097
- HDU 2837 Calculation (指数循环节)
- [KMP-循环节问题]HDU 1358 period
- hdu 1358 period 求循环节 KMP
- hdu 3746(KMP) 最小循环节
- HDU 1005 Number Sequence 找循环节
- hdu 4291 矩阵快速幂+循环节
- 据说看完这21个故事的人,30岁前都成了亿万富翁。你是下一个吗?
- [小割]hunnu 10063 bomb the road#无向图最小割
- 添加统计行(序事簿 和 分录)
- No manual entry for pthread_cond_wait 的解决方法
- 项目开发-疯狂连连看游戏开发
- HDU-3736(KMP_循环节)
- 1004_History_repeat_itself
- Embedded_driver_note_2012_8_9
- 2012北大信科夏令营外校上机题目2
- TSM 中一个domain 可以备份多个node 的思考 (policyset 和mgmt的关系)
- Embedded_driver_note_2012_8_10
- WaitForInputIdle
- c++语言中保留小数点的后n位
- 写正确函数需要注意的地方:二分查找