求8数码问题的A*算法程序(PASCAL语言)
来源:百度知道 编辑:UC知道 时间:2024/05/21 10:02:20
输入输出格式无所谓
谢谢liukelk~~
加了40分 把平衡树的也给偶吧~ 谢了~
我只有十五数码的.
你如果再给点分,我就给你个带堆和平衡树的.
program lk_A_3_1;{十五数码}
const
dre:array[1..4,1..2] of shortint=((-1,0),(0,-1),(0,1),(1,0));
type
coo=array[1..2] of shortint;
co=array[0..15] of coo;
node=record
data:co; {表示每一个数码的坐标}
de:shortint;{移动方向1,2,3,4分别表示上,左,右,下}
next,from:pointer;
depth:longint;
f:real;{估价函数值,包括深度}
end;
pointer=^node;
var
ans:co;
ls:array[1..4,1..4] of shortint;{棋盘}
h,t,p,q,v:pointer;
i,j,k,n:longint;
c:shortint;
l:coo;
procedure print;
begin
n:=1;
while q<>nil do
begin
fillchar(ls,sizeof(ls),0);
for k:=0 to 15 do
ls[q^.data[k,1],q^.data[k,2]]:=k;
writeln('Step ',n);
for i:=1 to 4 do
begin
for j:=1 to 4 do
write(ls[i,j]:4);
writeln;