洛谷 P1605 迷宮

2021-09-10 18:17:00 字數 1527 閱讀 2143

題目

題目背景

迷宮 【問題描述】

給定乙個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

一道簡單的dfs。

思路輸入n和m,用乙個二維陣列生成乙個bool型別的圖(省空間),還有t個障礙,for迴圈t次輸入障礙座標直接把陣列[x][y]改為零就把圖生成好了。

dfs如下:

int

dfs(

int x,

int y)

long

long sum=0;

vis[x]

[y]=1;

for(

int i=

0;i<

4;i++)}

vis[x]

[y]=0;

return sum;

}

最後,完整**如下:

#include

using

namespace std;

int n,m,tx,ty,sx,sy;

int dir[4]

[2]=

,,,}

;//擴充套件的4個方向

int mp[10]

[10];

//地圖

boolin(

int x,

int y)

//判斷邊界

int vis[10]

[10];

intdfs

(int x,

int y)

long

long sum=0;

vis[x]

[y]=1;

for(

int i=

0;i<

4;i++)}

vis[x]

[y]=0;

return sum;

}//暴力dfs

intmain()

//生成圖

cout <<

dfs(sx-

1,sy-1)

;//輸出

return0;

}

洛谷 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 5 這題是一題...