uva 1328 Period(KMP)
来源:互联网 发布:域名注册服务 编辑:程序博客网 时间:2024/06/06 15:36
题目链接:uva 1328 Period
题目大意:给出一个长度为n的字符串,要求找到一些i,满足说从1~i为两个的重复子串构成,并输出子串的个数。
解题思路:KMP,只是在求next数组的时候,对于每个位置的next[i]都进行判断,如果i%(i-next[i]) = 0,即为满足的位置。
#include <stdio.h>#include <string.h>const int N = 1e6+5;int n, next[N];char s[N];void getNext () {int p = 0;for (int i = 2; i <= n; i++) {while (p > 0 && s[p+1] != s[i])p = next[p];if (s[p+1] == s[i])p++;next[i] = p;if (p) {int k = i - next[i];if (i%k == 0)printf("%d %d\n", i, i/k);}}}int main () {int cas = 1;while (scanf("%d", &n) == 1 && n) {scanf("%s", s+1);printf("Test case #%d\n", cas++);getNext();printf("\n");}return 0;}
2 1
- uva 1328 Period(KMP)
- UVA 1328 - Period (KMP)
- UVA 1328 Period(KMP)
- uva uva 1328 - Period ---KMP算法
- uva 1328 Period(KMP循环节)
- UVa 1328 Period (KMP&失配函数的理解)
- UVA 1328 Period(KMP:最短循环节)
- uva 1328 - Period (周期串的判断 kmp)
- UVA 1328 Period
- UVa 1328 Period
- UVA 1328 Period
- Period + KMP
- Period [KMP]
- period kmp
- Period kmp
- Period UVA
- uva 1328 && Live Archive 3026 Period
- 1961 Period //KMP
- 在Javascript删除列表项中的下拉项怎么弄
- js问题.切记...不要犯错...
- Java Timer&TimerTask原理分析
- 并发*程同步
- Google Play应用市场中应用权限标签申请情况统计
- uva 1328 Period(KMP)
- 数据包接收系列 — 下半部实现(软中断)
- android LruCache存储
- 操作系统(10)文件系统管理
- DDR3读写时序
- 将Vim改造为强大的IDE—Vim集成Ctags/Taglist/Cscope/Winmanager/NERDTree/OmniCppComplete(有图有真相)
- DevExpress.LookUpEdit控件实现自动搜索定位功能
- SVN分支/合并原理及最佳实践
- HDU - 1728 逃离迷宫