题目大意
寻找每个连通“*”块中的连通“X”的个数。
思路分析
双重DFS——外层DFS搜索“*”连通块,内层DFS搜索“X”连通块。
TIPS:
在搜索过程中,将已搜索过的位置变为与背景相同的元素,保证了该位置不会被重复搜索。
存在的问题
鉴于我有强迫症,纠结了好久好久的问题是,怎么利用访问数组visit的方式来写这个两次DFS,却一直出错。希望哪位大佬能够解答一下,跪谢~
代码
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn = 55;
char map[maxn][maxn];
int num[maxn]; // 记录点数
int w, h; // w为列,h为行
int t = 0; // 记录点的个数s
int dx[4] = {
0,0,1,-1};
int dy[4] = {
1,-1,0,0};
void DFS_1(int x, int y) // 在*中找连通X
{
map[x][y]