题目链接:http://poj.org/problem?id=2406

题意:给出一个字符串s,求重复子串出现的最大次数。

分析:kmp的next[]数组的应用。

要求重复子串出现的最大次数,其实就是求字符串的最小循环节。

以下内容转载于:http://bbezxcy.iteye.com/blog/1377787

------------------------------------------------------------------------------------------------------------------------------

在这里我们假设这个字符串的长度是len,那么如果len可以被len-next[len]整除的话,我们就可以说len-next[len]就是那个最短子串的长度

为什么呢? 假设我们有一个字符串ababab,那么next[6]=4对吧,由于next的性质是,匹配失败后,下一个能继续进行匹配的位置,也就是说,把字符串的前四个字母,abab,平移2个单位,这个abab一定与原串的abab重合(否则就不满足失败函数的性质),这说明了什么呢,由于字符串进行了整体平移,而平移后又要重叠,那么必有

s[1]=s[3],s[2]=s[4],s[3]=s[5],s[4]=s[6].说明长度为2的字符串在原串中一定重复出现,这就是len-next[len]的含义!

------------------------------------------------------------------------------------------------------------------------------

国庆做题的效率的确不咋滴呀----=_=效率极其低下,总是做一题,然后就浏览网页,一天下来也做不了2,3 题

一个人做题的确是没什么劲,有点无聊有点闷,还是要有基友搞搞才比较有动力 +_+

打球伤了脚,现在哪都去不了,整天窝在宿舍,好惨的说~~~连解题报告都不想写了......不过还是硬着头皮转载别人的解释写了下来

感觉KMP那些字符串算法好难的说,只是懂了下皮毛,没有深刻理解,题目一变,然后就傻楞了.....无力吐槽了!!!!!

下面是AC代码:

 #include<cstdio>
#include<cstring>
const int N=+;
char s[N];
int next[N];
void get_next(char s[],int len)
{
int i=;
int j=-;
next[]=-;
while(i<=len)
{
if(j==-||s[j]==s[i])
next[++i]=++j;
else
j=next[j];
}
}
int main()
{
while(scanf("%s",s))
{
if(s[]=='.')
break;
int len=strlen(s);
get_next(s,len);
int k=len-next[len];
int ans;
if(len%k==)
ans=len/k;
else
ans=;
printf("%d\n",ans);
}
return ;
}

最新文章

  1. oracle数据库表空间追加数据库文件方法
  2. uGUI练习(七) Drag And Drop
  3. COJ968 WZJ的数据结构(负三十二)
  4. Apache服务器访问过慢分析及解决
  5. 12-24 关于UIScroView 控件的学习
  6. MySQL【Update误操作】回滚(转)
  7. iphone显示信号强弱(field test)
  8. 【PHP】文件上传限制
  9. DBCC Check
  10. 基础总结篇之二:Activity的四种launchMode
  11. JAVA的IO运用
  12. 解决IIS7中出现An&#160;error&#160;occurred&#160;on&#160;the&#160;server&#160;when&#160;processing&#160;the&#160;URL错误提示的方法
  13. android:onKeyDown
  14. Maven工具的介绍,配置及使用
  15. ue4(c++) 按钮中的文字居中的问题
  16. 冒泡排序-Python与PHP实现版
  17. Python内置方法中不明了的部分
  18. Mock1 moco框架的基本介绍
  19. hdoj:2045
  20. MyBatis 对数据库进行CRUD操作

热门文章

  1. UPF Usage
  2. php5.6.40编译安装
  3. HDU 2767 Proving Equivalences(至少增加多少条边使得有向图变成强连通图)
  4. STM32学习之路入门篇之指令集及cortex——m3的存储系统
  5. 树形DP 复习
  6. 大数据入门第十七天——storm上游数据源 之kafka详解(二)常用命令
  7. 20155209 林虹宇Exp2 后门原理与实践
  8. 20155227《网络对抗》Exp5 MSF基础应用
  9. 20155229《网络对抗技术》Exp8:Web基础
  10. 20155305《网络对抗》MSF基础应用