谁帮忙给个pascal广搜标程?刚学广搜,老师只说了几句就发题放假了.做题做的一塌糊涂啊.本来挺简单一道题做的麻烦不说而且还出错,所以想弄套标程,n*n个比较小的单位,用1表示不可走 用0表示

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/27 18:28:42

谁帮忙给个pascal广搜标程?刚学广搜,老师只说了几句就发题放假了.做题做的一塌糊涂啊.本来挺简单一道题做的麻烦不说而且还出错,所以想弄套标程,n*n个比较小的单位,用1表示不可走 用0表示
谁帮忙给个pascal广搜标程?
刚学广搜,老师只说了几句就发题放假了.做题做的一塌糊涂啊.本来挺简单一道题做的麻烦不说而且还出错,所以想弄套标程,n*n个比较小的单位,用1表示不可走 用0表示可走 只能从一个格子移到相邻的4个格子里.编程计算从出发点到目的地最短距离 输入格式 Input Format 第一行,n 以下的n*n行为一个0,1矩阵,最后一行为4个小于n的整数 表示出发点与目的地的坐标 输入 3 001 101 100 1 1 3 3 输出 4

谁帮忙给个pascal广搜标程?刚学广搜,老师只说了几句就发题放假了.做题做的一塌糊涂啊.本来挺简单一道题做的麻烦不说而且还出错,所以想弄套标程,n*n个比较小的单位,用1表示不可走 用0表示
纯手打. 这个看看辅导书.我在老师教的那节可没上 但看了个别人的程序就懂了. 主要是1.开数组记录. 2.2个指针 代表现在上一步(p)的一项和下一步的一项(q) 3.p在搜完所有可能后+1 q每次+1 4.注意去重. 5.搜到条件或搜完为止. 这条题目我帮你写下 好好看看 有问题联系我100523901 var jz:array[1..100,1..100] of integer; p,q,n,i,j,x2,y2:integer;jl,x,y:array[1..10000] of integer; yiqu:array[1..100,1..100] of boolean; unfind:boolean; procedure zuo(h,z:integer); begin if (x[p]+h0) and (y[p]+z0) and (jz[x[p]+h,y[p]+z]=0) and (not yiqu[x[p]+h,y[p]+z]) then begin x[q]:=x[p]+h; y[q]:=y[p]+z; jl[q]:=jl[p]+1; yiqu[x[q],y[q]]:=true; if (x[q]=x2) and (y[q]=y2) then unfind:=false; q:=q+1; end; end; begin read(n); unfind:=true; for i:=1 to n do for j:=1 to n do begin yiqu[i,j]:=false; read(jz[i,j]); end; read(x[1],y[1],x2,y2); jl[1]:=0; p:=1; q:=2; yiqu[x[1],y[1]]:=true; while (pq) and unfind do begin zuo(-1,0); zuo(0,-1); zuo(1,0); zuo(0,1); p:=p+1; end; write(jl[q-1]); end.