PASCAL迷宫
有一个由n*n房间组成的正方形,每个房间里都有一个数字,表示从这个房间可以通过地道向右或向下穿过几个房间。从左上角开始,如果谁能安全到达右下角就算胜利。这里4*4的方格中...
有一个由n*n房间组成的正方形,每个房间里都有一个数字,表示从这个房间可以通过地道向右或向下穿过几个房间。从左上角开始,如果谁能安全到达右下角就算胜利。这里4*4的方格中每一格表示进入这个房间时,可以向右或向下穿过的房间数。请计算从左上角可以到达右下角的路径数目。
展开
1个回答
展开全部
var n,i,j,sum:longint;
a:array[1..1000,1..1000]of longint;
b,c:array[1..1000000]of longint;
procedure ss(x,y:longint);
begin
if (x>n)or(y>n) then exit; //如果越界则返回
if (x=n)and(y=n) then inc(sum) //如果到达右下角则方案数加一
else
begin
ss(x+a[x,y],y); //向下
ss(x,y+a[x,y]); //向右
end;
end;
begin
readln(n);
for i:=1 to n do
begin
for j:=1 to n do
read(a[i,j]);
readln;
end;
ss(1,1); //深搜
if sum=0 then writeln('Can"t go to the lower right!') //如果没方案
else writeln(sum); //否则输出方案数
end.
a:array[1..1000,1..1000]of longint;
b,c:array[1..1000000]of longint;
procedure ss(x,y:longint);
begin
if (x>n)or(y>n) then exit; //如果越界则返回
if (x=n)and(y=n) then inc(sum) //如果到达右下角则方案数加一
else
begin
ss(x+a[x,y],y); //向下
ss(x,y+a[x,y]); //向右
end;
end;
begin
readln(n);
for i:=1 to n do
begin
for j:=1 to n do
read(a[i,j]);
readln;
end;
ss(1,1); //深搜
if sum=0 then writeln('Can"t go to the lower right!') //如果没方案
else writeln(sum); //否则输出方案数
end.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询