洛谷 P1605 迷宮

2021-07-26 05:55:06 字數 1467 閱讀 3015

【問題描述】

給定乙個n*m方格的迷宮,迷宮裡有t處障礙,障礙處不可通過。給定起點座標和

終點座標,問: 每個方格最多經過1次,有多少種從起點座標到終點座標的方案。在迷宮

中移動有上下左右四種方式,每次只能移動乙個方格。資料保證起點上沒有障礙。

輸入樣例 輸出樣例

【資料規模】

1≤n,m≤5

題目描述

輸入輸出格式

輸入格式:

【輸入】

第一行n、m和t,n為行,m為列,t為障礙總數。第二行起點座標sx,sy,終點

座標fx,fy。接下來t行,每行為障礙點的座標。

輸出格式:

【輸出】

給定起點座標和終點座標,問每個方格最多經過1次,從起點座標到終點座標的方

案總數。

輸入輸出樣例

輸入樣例#1:

2 2 1

1 1 2 2

1 2

輸出樣例#1:

1分析:搜尋一下就好,一定要用記憶化(要搜出所有路徑)

**:

var

i,j,m,n,k,ans,x,y,sx,sy,fx,fy,t:longint;

map:array[1..10000,1..6]of longint;

use:array[1..10000,1..6]of boolean;

procedure

dfs(x,y:longint);

begin

if map[x,y]=1

then

exit;

if (x=fx)and(y=fy) then

begin

inc(ans);

exit;

end;

use[x,y]:=true;

if (x-1>0)then

if (not use[x-1,y])then dfs(x-1,y);

if (x+1

<=n)then

if (not use[x+1,y])then dfs(x+1,y);

if (y-1>0)then

if (not use[x,y-1])then dfs(x,y-1);

if (y+1

<=m)then

if (not use[x,y+1])then dfs(x,y+1);

use[x,y]:=false;

end;

begin

read(n,m,t);

read(sx,sy,fx,fy);

fillchar(map,sizeof(map),0);

for i:=1

to t do

begin

read(x,y);

map[x,y]:=1;

end;

dfs(sx,sy);

write(ans);

end.

洛谷 P1605 迷宮

題目背景 迷宮 問題描述 給定乙個n m方格的迷宮,迷宮裡有t處障礙,障礙處不可通過。給定起點座標和 終點座標,問 每個方格最多經過1次,有多少種從起點座標到終點座標的方案。在迷宮 中移動有上下左右四種方式,每次只能移動乙個方格。資料保證起點上沒有障礙。輸入樣例 輸出樣例 資料規模 1 n,m 5 ...

洛谷p1605迷宮

迷宮 問題描述 給定乙個n m方格的迷宮,迷宮裡有t處障礙,障礙處不可通過。給定起點座標和 終點座標,問 每個方格最多經過1次,有多少種從起點座標到終點座標的方案。在迷宮 中移動有上下左右四種方式,每次只能移動乙個方格。資料保證起點上沒有障礙。輸入樣例 輸出樣例 資料規模 1 n,m 5 這題是一題...

洛谷 P1605 迷宮

題目 題目背景 迷宮 問題描述 給定乙個n m方格的迷宮,迷宮裡有t處障礙,障礙處不可通過。給定起點座標和 終點座標,問 每個方格最多經過1次,有多少種從起點座標到終點座標的方案。在迷宮 中移動有上下左右四種方式,每次只能移動乙個方格。資料保證起點上沒有障礙。輸入樣例 輸出樣例 資料規模 1 n,m...