pascal编程问题,,麻烦大家进来看看程序有什么问题?

来源:百度知道 编辑:UC知道 时间:2024/06/14 11:37:22
这段程序有什么问题?为什么说不在查找范围?
program a;
var i,j,sp1,sp2,l,max:integer; tree:array[1..20,1..6] of integer;
q:array[1..100,0..6] of integer; d:array[0..20] of integer;
begin
for i:=1 to 14 do for j:=1 to 6 do tree[i,j]:=0;
for j:=1 to 14 do tree[j,1]:=j;
tree[1,2]:=2; tree[1,3]:=3;tree[1,4]:=4;tree[2,2]:=5;tree[2,3]:=6;
tree[3,2]:=7;tree[3,3]:=8;tree[4,2]:=9;tree[4,3]:=10;tree[4,4]:=11;tree[7,2]:=12 ;
tree[7,3]:=13;tree[13,2]:=14;
sp1:=1;sp2:=1;
for i:=1 to 6 do q[1,j]:=tree[1,i];
q[1,0]:=1;
while sp1<=sp2 do
begin
l:=q[sp1,0]+1;j:=2;
while q[sp1,j]<>0 do
begin
sp2:=sp2+1;q[sp2,0]:=1;q[sp2,1]:=q[sp1,j];
for i:=2 to 6 do
q[sp2,i]:=tree[q[sp1,j],i];
j:=j+1
end;
sp1:=sp1+1
end;
writeln(q[sp2,0]);
for i:=0 to 20 do d[i]:=0;
for i:=1 to sp2 do

程序中while循环中y没有限定范围(本应为[0,6]),以下是修改后的程序:
program a;
var i,j,sp1,sp2,l,max:integer; tree:array[1..20,1..6] of integer;
q:array[1..100,0..6] of integer; d:array[0..20] of integer;
begin
for i:=1 to 14 do for j:=1 to 6 do tree[i,j]:=0;
for j:=1 to 14 do tree[j,1]:=j;
tree[1,2]:=2; tree[1,3]:=3;tree[1,4]:=4;tree[2,2]:=5;tree[2,3]:=6;
tree[3,2]:=7;tree[3,3]:=8;tree[4,2]:=9;tree[4,3]:=10;tree[4,4]:=11;tree[7,2]:=12 ;
tree[7,3]:=13;tree[13,2]:=14;
sp1:=1;sp2:=1;
for i:=1 to 6 do q[1,j]:=tree[1,i];
q[1,0]:=1;
while sp1<=sp2 do
begin
l:=q[sp1,0]+1;j:=2;
while (q[sp1,j]<>0)and(j<7)(此处!!!!) do
begin
sp2:=sp2+1;q[sp2,0]:=1;q[sp2,1]:=q[sp1,j];
for i:=2 to 6 do
q[sp2,i]:=tree[q[sp1,j],i];
j:=j+1
end;
sp1:=sp1+1
end;
writeln(q[sp2,0]);
for i:=0 to 20 do d[i]:=0;
for i:=1 to sp2 do
d[q[i,0]]:=d[q[i,0]]+1;
max:=d[1];
for i:=2 to 20 do<