題幹:
蒜頭君和他的朋友週末相約去召喚師峽谷踏青。他們發現召喚師峽谷的地圖是由一塊一塊格仔組成的,有的格仔上是草叢,有的是空地。草叢通過上下左右 4個方向擴充套件其他草叢形成一片草地,任何一片草地中的格仔都是草叢,並且所有格仔之間都能通過上下左右連通。如果用'#'
代表草叢,'.'
代表空地,下面的峽谷中有 2 片草地。
處在同乙個草地的 2 個人可以相互看到,空地看不到草地裡面的人。他們發現有乙個朋友不見了,現在需要分頭去找,每個人負責一片草地,蒜頭君想知道他們至少需要多少人。
第一行輸入 n, m(1≤n,m≤100) 表示峽谷大小
接下來輸入 n行字串表示峽谷的地形
輸出至少需要多少人
樣例輸入
5 6.#....
..#...
..#..#
...##.
.#....
樣例輸出
5問題分析:
這個問題其實就是問:一共有多少片草地。(自我感覺題目描述的不是很清楚)
解決方法:
使用的方法就是「深搜」。首先找到乙個草叢,即『#』,然後從該草叢處開始搜尋來確定有多少草叢與該草叢直接或間接相連,搜尋完畢之後得到一片草地,這片草地只需要乙個人;
然後再從未被搜尋過的草叢處開始搜尋,即重複上述步驟,直到所有的草叢都被搜過。
注意:要區分開我所說的「草叢」和「草地」,多個相連的「草叢」連成一片草地。
**如下:
#include#includeusing
namespace
std;
char map[105][105
];int vis[105][105]=;
int dir[4][2]=,,,};
intn,m;
intcnt;
void dfs(int x,int
y) }
}int
main()
}for(int i=1;i<=n;i++)}}
cout
}
計蒜客 踏青 dfs
題目描述 蒜頭君和他的朋友週末相約去召喚師峽谷踏青。他們發現召喚師峽谷的地圖是由一塊一塊格仔組成的,有的格仔上是草叢,有的是空地。草叢通過上下左右 4 個方向擴充套件其他草叢形成一片草地,任何一片草地中的格仔都是草叢,並且所有格仔之間都能通過上下左右連通。如果用 代表草叢,代表空地,下面的峽谷中有 ...
計蒜客 踏青(DFS)
蒜頭君和他的朋友週末相約去召喚師峽谷踏青。他們發現召喚師峽谷的地圖是由一塊一塊格仔組成的,有的格仔上是草叢,有的是空地。草叢通過上下左右 444 個方向擴充套件其他草叢形成一片草地,任何一片草地中的格仔都是草叢,並且所有格仔之間都能通過上下左右連通。如果用 代表草叢,代表空地,下面的峽谷中有 222...
藍橋杯 計蒜客之逃生
題幹 蒜頭君在玩一款逃生的遊戲。在乙個 n m 的矩形地圖上,蒜頭位於其中乙個點。地圖上每個格仔有加血的藥劑,和掉血的火焰,藥劑的藥效不同,火焰的大小也不同,每個格仔上有乙個數字,如果格仔上的數字是正數說明是乙個藥劑代表增加的生命值,如果是負數說明是火焰代表失去的生命值。蒜頭初始化有 v 點血量,他...