AcWing 1233. 全球变暖
原题链接
简单
作者:
贴着土地生活
,
2020-09-16 21:36:23
,
所有人可见
,
阅读 502
算法1
floodfill
#include<iostream>
#include<cstring>
using namespace std;
const int N = 1010;
const int dx[4] = {-1, 0, 1, 0}, dy[4] = {0, 1, 0, -1};
char g[N][N];
bool st[N][N];
int n;
bool dfs(int x, int y)
{
st[x][y] = true;
bool tag1 = true;
bool tag2 = false;
for(int k = 0; k < 4; ++ k)
{
int ix = x + dx[k], iy = y + dy[k];
if(ix < 0 || iy < 0 || ix >= n || iy >= n) continue;
if(g[ix][iy] == '.')
{
tag2 = true;
continue;
}
if(st[ix][iy]) continue;
if(g[ix][iy] == '#')
{
tag1 &= dfs(ix, iy);
}
}
return tag1 && tag2;
}
int main()
{
cin >> n;
int cnt = 0;
for(int i = 0; i < n; ++ i)
scanf("%s", g[i]);
for(int i = 0; i < n; ++ i)
for(int j = 0; j < n; ++ j)
if(g[i][j] == '#' && !st[i][j])
if(dfs(i, j)) ++ cnt;
printf("%d", cnt);
return 0;
}
同学你好,这段代码没看懂,能讲解下吗
if(g[ix][iy] == ‘#’) {
tag1 &= dfs(ix, iy);
}