思路:
1.首先我们先找到起点
2.以起点为初始结点开始搜索
3.以上下左右的顺序寻找未被访问过的黑色结点
3.移动到下一个结点并打上标记,代表这个结点已经被访问过了
4.如果这个当前结点周围都被访问过了,返回上一结点
5.重复直至栈空
代码
int m, n, counter = 1;
int mx[4] = {
0,1,0,-1 };
int my[4] = {
1,0,-1,0 };
bool nmap[30][30];
int a,b;
void dfs(int x, int y)
{
for (int i = 0; i < 4; i++){
if (nmap[x + mx[i]][y + my[i]] == true){
x = x + mx[i]; y = y + my[i];nmap[x][y] = false;counter++;dfs(x, y);x = x - mx[i]; y = y - my[i];nmap[x][y]=true;}}
}