pascal广度优先搜索问题

来源:百度知道 编辑:UC知道 时间:2024/05/26 07:24:27
如图示半个象棋盘,马从A跳到B再不限步数跳回A,输出步数。http://www2.freep.cn/Photo.php?url=photo36/0705142158328108.JPG

首先去的最小步数就是回来的最小步数
既然是广度优先,那要得必然是最短路径
如果我给出程序请你务必采纳!
等我!
program asdf;
var
x:array[1..4,1..2]of integer;
a,b,c:array[1..100]of integer;
i,j,x1,x2,y1,y2,t,w:integer;
p,q:boolean;
begin
readln(x1,x2,y1,y2);
x[1,1]:=1;x[1,2]:=2;
x[2,1]:=1;x[2,2]:=-2;
x[3,1]:=-1;x[3,2]:=2;
x[4,1]:=-1;x[4,2]:=-2;
a[1]:=x1;b[1]:=x2;c[1]:=0;
t:=1;w:=1;p:=false;
repeat
for i:=1 to 4 do
if (x[i,1]+a[t]>0)and(x[i,2]+b[t]>0) then
begin
inc(w);
a[w]:=x[i,1]+a[t];
b[w]:=x[i,2]+b[t];
c[w]:=c[t]+1;
q:=false;
for j:=1 to w-1 do