题目描述
亮亮拿到了一幅图,全是由"0"和"*"
组成,他想计算由*
所围成的图形的面积。面积的计算方法是统计“*”
号所围成的闭合曲线中“0”
的数目。
输入格式
由"0"和"*"组成的图(数据范围:最多10行,每行200个字符)
输出格式
一行一个整数,为面积数。
输入样例
**00*
0****
0*00*
0****
输出样例
2
题解
这题数据很小,可以用dfs做,
由于只需要算中间的0个数,周围的点与要计算的点的数量无关我们可以把连接边界的0进行dfs,并且把点进行染色,dfs过程如下:
void dfs(int x,int y)
{
a[x][y]=0;
for (int i=x-1;i<=x+1;i++)
{
for (int j=y-1;j<=y+1;j++)
{
if (a[i][j]==1 and (i+j+1==x+y or i+j-1==x+y)) dfs(i,j);
}
}
return ;
}
如果没看懂dfs的判断条件,可以去本人的博客:如何让dfs变得高大上
接着,我们在对连接边界的所有点进行dfs就行了,删点过程如下:
for (int i=1