這個題一看就是要用深搜(dfs)啦
那麼dfs函式的寫法就是這樣:
void
dfs(
int x,
int y)
return
;}
用乙個5x5的地圖來舉例(0代表無油,1代表有)
0 0 0 0 1
0 1 1 0 1
0 1 0 0 1
1 1 1 0 1
1 1 0 0 1
我們走到第一行第五列時發現符合條件的,那麼我們對他進行操作,於是走到第二行第五列再進行操作,於是第三行第五列。。。最後第五行第五列後找不到就層層返回。
變成了:
0 0 0 0 0
0 1 1 0 0
0 1 0 0 0
1 1 1 0 0
1 1 0 0 0
又走到了第二行第二列進行操作,根據我的順序(從右開始順時針探索)先找到第二行第三列,在第二行第三列的探索中找到第三行第二列,再依次探索。
#include
int m,n;
char a[
105]
[105];
int b[8]
[2]=
,,,,
,,,}
;void
dfs(
int x,
int y)
return;}
intmain()
getchar()
;}for(i=
1;i<=m;i++)}
}printf
("%d\n"
,count);}
return0;
}
迷宮問題 深搜
簡單的實現了迷宮 深搜 並非是最短路徑 我們規定 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 ...
深搜 門票問題
有很多人在門口排隊,每個人將會被發到乙個有效的通行密碼作為門票。乙個有效的密碼由l 3 l 15 個小寫英文本母組成,至少有乙個母音 a e i o u 和兩個子音 除去母音以外的音節 並且是按字母表順序出現的 例如abc是有效的,而bac不是 現在給定乙個期望長度為l和c 1 c 26 個小寫字母...