广度(宽度)优先搜索l.ppt

  1. 1、本文档共42页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
广度(宽度)优先搜索l

【深搜参考程序】 program EX8_4_1; const maxn=50; var map:array [1..maxn,1..maxn] of integer; f:boolean; n,m,i,j,desx,desy,soux,souy,totstep:integer; route:array[1..maxn] of record x,y : integer; end; procedure move(x,y,step:integer); begin map[x,y]:=step; //走一步,作标记,把步数记下来 route[step].x := x; route[step].y:= y; //记路径 if (x=desx) and (y=desy) then begin f:=true; totstep:=step; end else begin if (y<>m) and (map[x,y+1]=0) then move (x,y+1,step+1); //向右 if not f and (x<>n)and(map[x+1,y]=0) then move(x+1,y ,step+1); //往下 if not f and (y<>1)and(map[x,y-1]=0) then move(x,y-1, step+1); //往左 if not f and (x<>1)and(map[x-1,y]=0) then move(x-1,y, step+1); //往上 end; end; BEGIN readln(n,m); //n行m列的迷宫 for i:=1 to n do //读入迷宫,0表示通,-1表示不通 begin for j:=1 to m do read(map[i,j]); readln; end; write('input the enter:'); readln(soux,souy); //入口 write('input the exit:'); readln(desx,desy); //出口 f:=false; //f=false表示无解;f=true表示找到了一个解 move(soux,souy,1); if f then for i:=1 to totstep do //输出直迷宫的路径 write(route[i]:4); else writeln ('no way.'); END. 【广搜参考程序】 program EX8_4_2; const maxn=50; u:array[1..4] of integer=(0,1,0,-1); w:array[1..4] of integer=(1,0,-1,0); var map:array [1..maxn,1..maxn] of integer; f:boolean; n,m,i,j,desx,desy,soux,souy,head,tail,x,y:integer; route:array[1..maxn] of record x,y,pre : integer; end; procedure print(d:integer); begin if route[d].pre<>0 then print(route[d].pre); write('(',route[d].x,',',route[d].y,')');

您可能关注的文档

文档评论(0)

zilaiye + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档