迷宫pascal程序

题意

走迷宫,要绕开障碍,走过的就不能再走,求有多少种不同的方法可以到达终点


分析

我们可以用深搜来做,输入时把障碍的坐标记录下来


const
dx:array[1..4]of longint=(0,0,1,-1);
dy:array[1..4]of longint=(1,-1,0,0);


var
n,m,t,sx,sy,fx,fy,tj,i,z1,z2:longint;
a:array[-100..100,-100..100]of longint;


procedure search(x,y:longint);
var
i:longint;
begin
    if (a[x,y]=1)or(x<1)or(x>n)or(y<1)or(y>m) then exit;
    if (x=fx)and(y=fy) then
    begin
        inc(tj);
        exit;
    end;
    a[x,y]:=1;
    for i:=1 to 4 do
    begin
        x:=x+dx[i];
        y:=y+dy[i];
        search(x,y);
        x:=x-dx[i];
        y:=y-dy[i];
    end;
    a[x,y]:=0;
end;


begin
    readln(n,m,t);
    readln(sx,sy,fx,fy);
    fillchar(a,sizeof(a),0);
    for i:=1 to t do
    begin
        readln(z1,z2);
        a[z1,z2]:=1;
    end;
    tj:=0;
    search(sx,sy);
    write(tj);
end.



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值