这两道题相似,使用递归搜索
踏青
题目描述
小白和他的朋友周末相约去召唤师峡谷踏青。他们发现召唤师峡谷的地图是由一块一块格子组成的,有的格子上是草丛,有的是空地。草丛通过上下左右 4 个方向扩展其他草丛形成一片草地,任何一片草地中的格子都是草丛,并且所有格子之间都能通过上下左右连通。如果用’#‘代表草丛,’.'代表空地,下面的峡谷中有 2 片草地。
##…
…##
处在同一个草地的 2 个人可以相互看到,空地看不到草地里面的人。他们发现有一个朋友不见了,现在需要分头去找,每个人负责一片草地,想知道他们至少需要多少人。
输入
第一行输入 n, m (1 ≤ n,m ≤ 100) 表示峡谷大小。
接下来输入 n 行字符串表示峡谷的地形。
输出
输出至少需要多少人。
样例
输入
5 6
.#…
…#…
…#…#
…##.
.#…
输出
5
思路
用二维数组表示地形,输入后循环,对于每个未标记的草丛,四个方向递归,遇到未标记的草丛则标记,遇到空地则返回
代码
#include <iostream>
using namespace std;
int n, m, map[101][101];
void F(const int& x, const int& y){
if(0 <= x && x < n && 0 <= y && y < m && map[x][y] == 0) map[x][y] = 2;
else return;
F(x+1, y<