迷宮問題(深搜 回溯)

2021-08-01 06:03:25 字數 778 閱讀 3107

time limit: 1 sec  memory limit:128 mb  64bit io format: %lld

[submit][status][web board]

設有乙個n*n(2<=n<10)方格的迷宮,入口和出口分別在左上角和右上角。迷宮格仔中分別放0和1,0表示可通,1表示不能,入口和出口處肯定是0。迷宮走的規則如下所示:即從某點開始,有八個方向可走,前進方格中數字為0時表示可通過,為1時表示不可通過,要另找路徑。找出所有從入口(左上角)到出口(右上角)的路徑(不能重複),輸出路徑總數,如果無法到達,則輸出0。

第一行乙個正整數n;

接下來的包含n行,每行n個數。用來描述迷宮。

輸出路徑總數。

3

0 0 0

0 1 1

1 0 0

2

這類問題重點在於訪問過的點又可能還要再次訪問,所以用dfs加簡單回溯就可以了。

#include#include#includeusing namespace std;

const int n=15,sx[8]=

,sy[8]=;//八個方向標記做好

int n,sum=0;

int s[n][n],

a[n][n];//是否訪問過標記

void dfs(int x,int y)

for(int i=0;i<8;i++)//依次訪問該點周圍八個方向

return 0;

}

已ac。

迷宮問題 深搜

簡單的實現了迷宮 深搜 並非是最短路徑 我們規定 1 為牆,0 為通路。為了避免越界,在迷宮外面加了一堵牆。當然也可以不需要牆。實現很簡單,用乙個陣列棧儲存已訪問過的位置,用四個if語句判斷東南西北四個方向能否走通。若往前已無路可走便退回上乙個位置。具體實現如下 include include de...

迷宮問題(深搜

d 迷宮問題 crawling in process.crawling failed time limit 1000msmemory limit 65536kb64bit io format i64d i64u submit status description 定義乙個二維陣列 int maze ...

迷宮問題(廣搜與深搜)

定義乙個二維陣列 int maze 5 5 它表示乙個迷宮,其中的1表示牆壁,0表示可以走的路,只能橫著走或豎著走,不能斜著走,要求程式設計序找出從左上角到右下角的最短路線。input 乙個5 5的二維陣列,表示乙個迷宮。資料保證有唯一解。output 左上角到右下角的最短路徑,格式如樣例所示。sa...