for i:=1 to w-1 do
if g[i]=g[w] then begin exampass:=false; exit; end;
exampass:=true; end;
begin {生成新结点} gettimenow(a);
g[1]:=start; p[1]:=0; t:=1; s:=2; repeat
k:=pos('0',g[t]); for i:=-3 to 3 do
if (i<>0) and (k+i>=1) and (k+i<=7) then begin g[s]:=g[t];
g[s,k]:=g[s,k+i]; g[s,k+i]:='0'; p[s]:=t;
if exampass(s) then begin if g[s]=obj then draw(s); inc(s); end; end; inc(t); until t>=s;
writeln('NoWay'); end.
算法骤(二):
⒈数据库:数组g构成堆栈,存放棋子的状态。
⒉结点的产生:与空位置间距-3到3的棋子可移入空位,生成新结点状态。 ⒊搜索策略:含有深度界限的深度优先搜索。
源程序如下:
program ex143-2; {深度优先搜索} uses time; type
status=string[7]; const
start: status ='0---+++'; obj: status ='+++---0'; var
a,b,c: timetype;
g: array [0..10] of status;
搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新人文社科广度优先搜索(17)全文阅读和word下载服务。
相关推荐: