迷宫问题
program migong;
var
map:array[0..100,0..100]of longint;
step,s:array[1..100,1..2]of longint;
i,maxd,j:longint;
function check(x,y:longint):boolean;
begin
if (x>=0)and(x<=4)and(y>=0)and(y<=4) then
begin
if map[x,y]=0 then exit(true) else exit(false);
end;
end;
procedure play(k,x,y:Longint);
var
i:longint;
begin
step[k,1]:=x;
step[k,2]:=y;
if (x=4)and(y=4)and(k<maxd) then
begin
maxd:=k;
s:=step;
end;
if check(x+1,y) then play(k+1,x+1,y);
if check(x,y+1) then play(k+1,x,y+1);
end;
begin
// assign(input,'win.in');
// assign(output,'win.out');
// reset(input);
// rewrite(output);
maxd:=100;
for i:=0 to 4 do
begin
for j:=0 to 4 do read(map[i,j]);
readln;
end;
play(1,0,0);
for i:=1 to maxd do writeln('(',s[i,1],',',s[i,2],')');
// close(input);
// close(output);
end.
用递归写搜索问题 这是爽啊

浙公网安备 33010602011771号