dfs入門 紅與黑

2021-07-31 06:01:25 字數 1424 閱讀 5379

時間限制: 1 sec  

記憶體限制: 32 mb

提交: 10  

解決: 8 [

提交][

狀態][

討論版]

小明站在乙個矩形房間裡,這個房間的地面鋪滿了地磚,每塊地磚的顏色或是紅色或是黑色。小明一開始站在一塊黑色地磚上,並且小明從一塊地磚可以向上下左右四個方向移動到其他的地磚上,但是他不能移動到紅色地磚上,只能移動到黑色地磚上。

請你程式設計計算小明可以走到的黑色地磚最多有多少塊。

輸入包含多組測試資料。

每組輸入首先是兩個正整數w和h,分別表示地磚的列行數。(1<=w,h<=20)

接下來h行,每行包含w個字元,字元含義如下:

『.』表示黑地磚;

『#』表示紅地磚;

『@』表示小明一開始站的位置,此位置是一塊黑地磚,並且這個字元在每組輸入中僅會出現乙個。

當w=0,h=0時,輸入結束。

對於每組輸入,輸出小明可以走到的黑色地磚最多有多少塊,包括小明最開始站的那塊黑色地磚。

6 9

....#.

.....#

......

......

......

......

......

#@...#

.#..#.

11 9

.#.........

.#.#######.

.#.#.....#.

.#.#.###.#.

.#.#..@#.#.

.#.#####.#.

.#.......#.

.#########.

...........

11 6

..#..#..#..

..#..#..#..

..#..#..###

..#..#..#@.

..#..#..#..

..#..#..#..

7 7..#.#..

..#.#..

###.###

...@...

###.###

..#.#..

..#.#..

0 0

45596

13

提示

分析:很簡單的dfs入門題,需要注意的地方就是那個行和列別輸入反了就好。

#include using namespace std;

char mp[25][25];

int sx[4]= ;

int sy[4]= ;

int cnt;

int m,n;

int s1,s2;

int record;

void dfs(int x,int y)

}  }

int main()}}

dfs(s1,s2);

cout<

DFS特訓(POJ2816)紅與黑,DFS解法

解題思路 說白了就是一題求連通塊的題目,這裡運用深度優先搜尋,遍歷每乙個合法的位置,每到乙個位置全域性變數ans都會自加1。這裡一定要注意判別條件,越界的陣列和根據題目要求為 的陣列要素直接跳過即可。遍歷完全後列印全域性變數的數值。注意題目中要求尋找起點的要求。總時間限制 1000ms 記憶體限制 ...

藍橋杯練習 DFS 1113 紅與黑

1113.紅與黑 include include include using namespace std const int n 25 int n,m char g n n bool st n n int dx 4 dy 4 intdfs int x,int y return cnt int mai...

DFS特訓 紅與黑(POJ2816)遞迴解法

解題思路 其實遞迴與上一題紅與黑dfs方法求解的思路基本一致,只是這裡的解法更能反映遞迴的特質,我覺得會更有利於幫助我們理解遞迴從而更自如地運用遞迴 經測試,耗時相同的情況下 量也相對少一些 如果遇到不是 的符號,return 1 f x 1,y f x 1,y f x,y 1 f x,y 1 返回...