讨论 / 谁知道我哪儿错了?
苍狼 2009-10-08 00:31:00
点我顶贴 收藏 删除
program a382;

type data=array[1..300001]of longint;

var

s,t:ansistring;

next,print:data;

num,p:longint;

procedure getnext(t:ansistring;var next:data);

var j,k:longint;

begin

j:=1;k:=0;next[1]:=0;

while j<length(t) do

if (k=0)or(t[j]=t[k]) then

begin

inc(j);inc(k);

if t[j]<>t[k] then next[j]:=k

else next[j]:=next[k];

end

else k:=next[k];

end;

procedure kmp(s,t:ansistring);

var i,j:longint;

begin

i:=1;j:=1;

repeat

while (i<=length(s))and(j<=length(t)) do

if (j=0)or(s[i]=t[j]) then begin inc(i);inc(j);end

else j:=next[j];

if j>length(t) then begin inc(num);print[num]:=i-length(t);end

else exit;

i:=i-length(t)+1;j:=1;

until 1+1<>2;

end;

begin

readln(t);

readln(s);

getnext(t,next);

kmp(s,t);

if num=0 then begin write(’There must be something wrong.’);exit;end;

writeln(num);

for p:=1 to num-1 do writeln(print[p]);

write(print[num]);

readln;readln;

end.

查看状态 Show Status

状态题目:自然的谜语

题目编号:382-自然的谜语 查看该题

状态: Unaccepted

测评机: Xeost[5]

得分: 80分

提交日期: 2009-10-7 23:02:00

有效耗时: 1249毫秒

测试结果1: 通过本测试点|有效耗时156ms

测试结果2: 通过本测试点|有效耗时47ms

测试结果3: 通过本测试点|有效耗时47ms

测试结果4: 通过本测试点|有效耗时203ms

测试结果5: 通过本测试点|有效耗时203ms

测试结果6: 通过本测试点|有效耗时203ms

测试结果7: 通过本测试点|有效耗时203ms

测试结果8: 通过本测试点|有效耗时187ms

测试结果9: 选手程序运行超过时限

测试结果10: 输出过少|用户输出数据少于标准输出的50%[标准输出338906位|选手输出1400位]

大牛们帮忙看下呀!

#1 f(x)@2009-10-08 00:31:00
回复 删除
我也是一样...
查看更多回复
提交回复