洛谷P1605迷宮

2021-10-03 04:12:24 字數 1318 閱讀 2321

題目背景

給定乙個n*m方格的迷宮,迷宮裡有t處障礙,障礙處不可通過。給定起點座標和終點座標,問: 每個方格最多經過1次,有多少種從起點座標到終點座標的方案。在迷宮中移動有上下左右四種方式,每次只能移動乙個方格。資料保證起點上沒有障礙。

題目描述

無輸入格式

第一行n、m和t,n為行,m為列,t為障礙總數。第二行起點座標sx,sy,終點座標fx,fy。接下來t行,每行為障礙點的座標。

輸出格式

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

輸入輸出樣例

輸入 #1

2 2 1

1 1 2 2

1 2輸出 #1

說明/提示

【資料規模】

1≤n,m≤5

思路:

要求找路線總數,用dfs搜尋

每乙個座標,理論上可以向上下左右四個方向探索,但是有幾個限制條件:

當前座標(x,y),下一步座標(x1,y1)

(1)邊界——總共n行,m列

保證 1<=x1<=n && 1<=y1<=m

(2)障礙

用陣列barrier[10][10]儲存有障礙的節點

(3)已經探索過

用陣列vis[10][10]儲存訪問過的節點

int dx=

;int dy=

;for

(int i=

0; i<

4; i++

)

建立2個陣列,用for迴圈全部遍歷下一步可能的4個方向

ac**:

#include

using

namespace std;

int n, m, t, num, sx, sy, fx, fy;

int vis[10]

[10];

//記錄訪問過的節點

int barrier[10]

[10];

//記錄障礙

int dx=

;int dy=

;void

dfs(

int x,

int y)

for(

int i=

0; i<

4; i++)}

return;}

intmain()

vis[sx]

[sy]=1

;//記錄起始節點已經被訪問

dfs(sx,sy)

; cout

}

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