時間限制: 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 返回...