【转】http://www.slyar.com/blog/poj-2406-c.html
#include <stdio.h>
#include <string.h>
#define MAX 1000001
int next[MAX];
char s[MAX];
int main()
{
int i, j, n, k, len;
while(1)
{
scanf("%s", s);
if (strcmp(s, ".") == 0) break;
len = strlen(s);
i = 0;
j = -1;
next[0] = -1;
while(i < len)
{
if (j == -1 || s[i] == s[j])
{
i++;
j++;
next[i] = j;
}
else
{
j = next[j];
}
}
/* 计算首尾重复子串的长度 */
j = i - next[i];
printf("%d %d %d\n", i, next[i], j);
/* 若串满足重复性质,则i%j==0;否则重复子串为本身 */
if (i % j == 0) k = i / j;
else k = 1;
printf("%d\n", k);
}
return 0;
}
分享到:
相关推荐
训练时发现的好题目。#include #include int main() { char ch; char str[100]; while(gets(str)) { if(str[0] == 'E') return 0; int z = 0, o = 0, j = 0, i = 0; while(str[i] !...}
学习ACM程序设计的朋友一定要看,这是训练必备的POJ ZOJ题目分类及解题思路
Interview,ZOJ,POJ 等平台。 欢迎Coders对代码加以指正和提议! 常见问题总结 两整数求平均值 average = min + (max - min) / 2 防止两整数的和越界 整数乘积对比 1.0 * m * m == num 类似乘积对比, 需转为double...
zoj 2814 Surprising Strings.md
自动探测POJ、HDU、SOJ、ZOJ水题,对于有志于刷遍各种水题的ACMer来说非常有用
利用vjudge源码改造爬虫抓取vjudge全局共享答案资源。 ACMer,请用于参考思路,对拍代码,不要直接提交。
ZOJ解题报告ZOJ解题报告ZOJ解题报告ZOJ解题报告
zoj题目简单归类zoj题目简单归类zoj题目简单归类
acm中zoj1002的可运行C++程序
包含了zoj700多道题目的源代码,在做题时可以参考
Problem Arrangement zoj 3777
ZOJ题目答案源码
一个非常非常非常非常实用的zoj结题代码
zoj 1003 c语言的,要写这么多描述吗。。
ZOJ1805代码
本代码是zoj上AC的1951的代码,把双重循环简化为O(n),不过素数判断的改进还不够
浙大ZOJ题目分类,可以让你更方便快速锁定那你想要联系的题目,是自己快速提高·
zoj1027解题指南和代码,还不错,是学校培训给的。
ZOJ题解集合-截至2835。共1244个文件,C/C++,有重复
zoj 题库 详细解答 解题代码 acm