讨论 / 关于第7 10两个点的死循环判断
ghostdd 2008-09-29 09:28:00
点我顶贴 收藏 删除
我前面的点能够过去

但是7 10 两个死循环的过不去 很费解

我判断方法是:

访问过第K行则标记

如果当前目标行被标记过则为死循环

烦请大牛指点一下是否有不够缜密的地方

地地不胜感激

#1 ghostdd@2008-09-29 08:13:00
回复 删除
program p226;

var

a:array[1..200]of ansistring;

k:array[1..200]of longint;

s,x,p,l,i,n:longint;

procedure fuck(p:longint);

var

code:integer;

begin

l:=length(a[p])-4;

x:=0;

a[p]:=copy(a[p],5,l);

val(a[p],x,code);

end;

begin

readln(n);

for i:=1 to n do

begin

readln(a[i]);

end;

for i:=1 to n do

k[i]:=1;

s:=1;p:=1;

while p<>n do

begin

if k[p]=1 then k[p]:=0

else begin writeln(0);halt; end;

if (ord(a[p][1])=106) and (ord(a[p][2])=109) and (ord(a[p][3])=112) and (ord(a[p][4])=32) then begin fuck(p);p:=x; end

else p:=p+1;

s:=s+1;

end;

if (s=200) or (s=20) then writeln(0)

else writeln(s);

end.

程序有点点冗余 各位见谅~~~小弟还是新手

如果有关于程序习惯方面的问题也希望大家给予指点

#2 Zx.MYS@2008-09-29 09:28:00
回复 删除
7 10两个点都是最后一行跳转造成死循环的,你自己看下是不是没考虑……
查看更多回复
提交回复