帮忙做一下free pascal一道题,谢谢了

Fromayliyh基础题_周期串背景Background基础题描述Description问题描述:如果一个字符串是以一个或者一个以上的长度为k的重复字符串所连接成的,那... From ayliyh
基础题_周期串

背景 Background
基础题

描述 Description
问题描述:
如果一个字符串是以一个或者一个以上的长度为k的重复字符串所连接成的,那么这个字符串就被称为周期为k的字符串。例如,字符串”abcabcabcabc”周期为3,因为它是由4个循环”abc”组成的。它同样是以6为周期(两个重复的”abcabc”)和以12为周期(一个循环”abcabcabcabc”)。
写一个程序,读入一个字符串,并测定它的最小周期。
输入文件(PERIODIC.IN):
一个最长为100的没有空格的字符串。
输出文件(PERIODIC.OUT):
一个整数表示输入的字符串的最小周期。
输入输出样例:
PERIODIC.IN
HoHoHo

PERIODIC.OUT
2

时间限制 Time Limitation
各个测试点1s

我写的错了
program p1430;
var
a:string;
i,j,k,m,n,x,y,t,h:longint;
b:array[1..100] of integer;
begin
readln(a);
n:=ord(a[0]);
if n mod 2=1 then begin writeln(n); exit; end;
t:=1; j:=1;
x:=0; b[1]:=1;
for i:=2 to n do
begin
if (a[i]=a[1]) then j:=j+1;
if (a[i]=a[1]) and (a[i]<>a[i+1]) then
begin
t:=t+1;
b[t]:=i;
end;
end;
if j=n then begin writeln(1); exit; end else j:=1;
b[t+1]:=n+1;
m:=b[2]-1;
for h:=1 to t-1 do
begin
k:=0; j:=j+1;
for i:=b[j] to b[j+1]-1 do
begin
k:=k+1;
if a[i]=a[k] then
begin
m:=m+1;
end;
end;
end;
if m<>n then writeln(n)
else writeln(b[2]-1);
end.
编译通过...
测试数据1:答案正确... 0ms
测试数据2:答案正确... 0ms
测试数据3:答案错误...
测试数据4:答案正确... 0ms
测试数据5:答案正确... 0ms
测试数据6:答案正确... 0ms
测试数据7:答案正确... 0ms
测试数据8:答案正确... 0ms
测试数据9:答案错误...
测试数据10:答案正确... 0ms
-------------------------
Unaccepted 有效得分:80 有效耗时:0ms
展开
 我来答
grayluck
2010-02-23 · 超过10用户采纳过TA的回答
知道答主
回答量:26
采纳率:0%
帮助的人:0
展开全部
哪儿用写得这么麻烦啊.(这道是..联赛普及组难度题吧,马上要省队选拔了,看到这种题目~~555很欣慰~~)
你是不是少考虑了abcabcab这种最后一次循环少一点东西的情况,题目有说清楚么..
呐,我是C++的,写个pascal的代码给你.
这段代码是O(n^2)枚举了一遍:
var
t:integer;
len,i,j:integer;
s:string;
bo:boolean;
begin
readln(s);
len:=length(s);
for i := 1 to len do
begin
t:=1;
bo:=true;
for j := 1 to len do
begin
if(s[i]<>s[t])then
begin
bo:=false;
break;
end;
inc(t);
if(t>i) then
t:=1;
end;
if(bo)then
begin
writeln(i);
halt;
end;
end;
end.
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式