现在以这题来举例(迷宫)
1 1 1 1
0 1 0 1
0 1 0 1
0 1 1 1
记录起点为(startx,starty)找到所有的到(endx,endy)的路径.
startx,starty,endx,endy要求输入,假定 (startx,starty)、(endx,endy)都为1。
我的程序老是只找到一条路径,求解决。
program BFS_PROJECT;
const
cx:array[1..4]of shortint=(0,0,1,-1);
cy:array[1..4]of shortint=(1,-1,0,0);
var m, endx, endy, startx, starty, t, i, j, k : byte;
a:array[1..100,1..100]of byte;
n:array[1..100]of byte;
procedure scanf;//输入
begin
readln(t);
write('start.x,start.y:'); readln(startx,starty);
write(' end.x, end.y:'); readln( endx, endy);
writeln('迷宫:');
for i := 1 to t do for j := 1 to t do read(a[i, j]);
end;
procedure dfs(x, y : shortint);//深度搜索
begin
if(x > 0)and(x < 5)and(y > 0)and(y < 5)then
if a[x,y] = 1 then
begin
a[x,y] := 2;
if(x = endx) and (y = endy)then
begin
writeln('-----------');
for i:=1 to t do
begin
for j:=1 to t do write(a[i,j], ' '); writeln;
end; inc(m);
end
else for i := 1 to 4 do dfs(x + cx[ i ],y + cy[ i ]);
a[x,y] := 1;
end;
end;
begin//主程序
scanf; dfs(startx, starty);
writeln('-----------'); writeln(m);//输出
end.
如果可以,一定要加分!!!!!!!!!!