正好我以前做过一个,好不容易从箱底给你翻出来了。
0表示道路。1表示正确路径。2表示墙。10表示出口。
program migong(input,output);
const
IX=10;JY=6;
var
a:array[1..IX,1..JY]of integer;
i,j:integer;
procedure print;
var
i,j:integer;
begin
for j:=1 to JY do
begin
for i:=1 to IX do
write(a[i][j]);
writeln;
end;
writeln;
end;
procedure try(i,j:integer); {0 for way;1 for right way;2 for wall;10 for exit}
var
bi,bj,d:integer;
begin
a[i][j]:=1;
for d:=1 to 4 do
case d of
1:if(i-1>=1)and(i-1<=IX)
then begin
bi:=i-1;bj:=j;
if(a[bi][bj]=10)
then print
else if(a[bi][bj]=0) then try(bi,bj);
end;
2:if(j-1>=1)and(j-1<=JY)
then begin
bi:=i;bj:=j-1;
if(a[bi][bj]=10)
then print
else if(a[bi][bj]=0) then try(bi,bj);
end;
3:if(i+1>=1)and(i+1<=IX)
then begin
bi:=i+1;bj:=j;
if(a[bi][bj]=10)
then print
else if(a[bi][bj]=0) then try(bi,bj);
end;
4:if(j+1>=1)and(j+1<=JY)
then begin
bi:=i;bj:=j+1;
if(a[bi][bj]=10)
then print
else if(a[bi][bj]=0) then try(bi,bj);
end;
end;
a[i][j]:=0;
end;
begin
for i:=1 to IX do
for j:=1 to JY do
a[i][j]:=0;
for i:=2 to 10 do
a[i][1]:=2;
for i:=1 to 8 do
a[i][6]:=2;
a[2][2]:=2;a[5][2]:=2;a[9][2]:=2;a[10][2]:=2;
a[4][3]:=2;a[5][3]:=2;a[7][3]:=2;a[10][3]:=2;
a[2][4]:=2;a[3][4]:=2;a[7][4]:=2;a[8][4]:=2;a[10][4]:=2;
a[5][5]:=2;a[10][5]:=2;
a[10][6]:=10;
{migong has drawn}
try(1,1);
end.