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個數。用來描述迷宮。
輸出路徑總數。
30 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...