hdu 3336 KMP走起 如果让我说:我只能说,实力决定一切
来源:互联网 发布:淘宝最好的手机店 编辑:程序博客网 时间:2024/04/30 13:14
思路:利用KMP求解串的前缀的个数:
例如: a b a b
next: -1 0 0 1
含义:当前字符前面与开头匹配串的最大长度
所以:每当next[i]>0时,肯定前面有一个匹配。
注意:别忘了该字符串的长度为4(但是下标为0),查找时for()应该等于该长度,因为abab中 ab符合条件。
#include<iostream>#include<algorithm>#include<cstdio>#include<string.h>using namespace std;int next[200100];void get_next(string a){ int k=-1; int j=0; next[0]=-1; while(j<a.size()) { if(k==-1||a[k]==a[j]) { k++; j++; next[j]=k; } else k=next[k]; }}int main(){ int T,t,i,j; int sum=0,tem;; string te; scanf("%d",&T); while(T--) { scanf("%d",&t); cin>>te; get_next(te); for(int i=0;i<=t;i++) printf("%d\t",next[i]); sum=t; for(i=1; i<=t; i++) { for(j=next[i]; j!=0; j=next[j]) //当前的和开头子串比较 { printf("j=%d\n",j); sum++; } sum%=10007; } printf("%d\n",sum); } return 0;}
- hdu 3336 KMP走起 如果让我说:我只能说,实力决定一切
- hdu3746 KMP之next[]威武 如果让我说:我只能说,实力决定一切。
- poj 2752 KMP+DFS() 如果让我说:我只能说,实力决定一切
- hdu 2642 二维数组+判重 如果让我说:我只能说,实力决定一切
- hdu 1233 kruskal+优先队列 如果让我说:我只能说,实力决定一切。
- hdu 3191 次短路+优先队列 如果让我说:我只能说,实力决定一切
- hdu1301 MST+优先队列 如果让我说:我只能说,实力决定一切。
- hdu2767强连通+缩点 如果让我说:我只能说,实力决定一切
- hdu1269强连通水题 如果让我说:我只能说,实力决定一切
- poj2553强连通+缩点 如果让我说:我只能说,实力决定一切
- poj2186 强连通+缩点 如果让我说:我只能说,实力决定一切
- hdu2544 spfa 第一弹 如果让我说:我只能说,实力决定一切
- hdu1535 spfa() 如果让我说:我只能说,实力决定一切
- hdu2112 spfa() 如果让我说:我只能说,实力决定一切
- poj3463 hdu1688 次短路+优先队列 如果让我说:我只能说,实力决定一切
- hdu3339 spfa()+dp 如果让我说:我只能说,实力决定一切
- poj3974 hdu3068最长回文子串 如果让我说:我只能说,实力决定一切
- poj3321 树状数组+DFS() 如果让我说:我只能说,实力决定一切
- PHP 状态机
- 失业的程序员(九):前戏篇
- UCCX初始化
- 关于ALSA的小结
- WIN7中组件服务中的DCOM配置找不到Microsoft Excel应用程序的解决办法
- hdu 3336 KMP走起 如果让我说:我只能说,实力决定一切
- hadoop svn地址
- android文件读写(更新中……)
- Functions that are executed before and after main() in C
- ALSA SOC在Linux3.1上的一些改进
- 关于程序员的一些思考
- Wireshark使用详解
- rst实验
- 汇编中的test和cmp指令[Z] 汇编中的test和cmp指令[Z]