八数码 pascal 解答(分析详细)

来源:百度知道 编辑:UC知道 时间:2024/05/16 17:33:45

给个双向广度优先搜索的程序。
想要更详细的,楼主,提高悬赏吧。
program num8;
const maxn=4000;
type jid=record
str:string[9];
f:0..maxn;
dep:byte;
end;
bin=0..1;
var c:array[0..1,1..maxn] of ^jid;
head,tail:array[0..1] of integer;
start,goal:string[9];
procedure init;
var i,j:integer;
begin
start:='283164705';
goal:='123804765';
for i:=0 to 1 do
for j:=1 to maxn do
new(c[i,j]);
c[0,1]^.str:=start; c[0,1]^.f:=0; c[0,1]^.dep:=0;
c[1,1]^.str:=goal; c[1,1]^.f:=0; c[1,1]^.dep:=0;
for i:=0 to 1 do
begin head[i]:=0;tail[i]:=1;end;
end;
procedure print(st:bin;tail,k:integer);
procedure print0(m:integer);
begin
if m<>0 then
begin print0(c[0,m]^.f);writeln(c[0,m]^.str) end;
end;
procedure print1(m:integer);
var n:integer;
begin
n:=c[1,m]^.f;
while n<>0 do
begin wr