题目描述
桐桐拿到了一幅图,全是由“0”和“*”组成,她想计算由“*”号所围成的图形的面积。面积的计算方法是统计“*”号所围成的闭合曲线中“0”的数目。
输入
由0,*组成的图(最多1000行,每行不超过200个字符)。
输出
面积数。
样例输入 Copy
**00* 0**** 0*00* 0****样例输出 Copy
2
思路
先将周围是’0‘的进行搜索将其周围的’0‘都变为’*‘,统计’0‘的个数即为答案
代码
#include <iostream>
using namespace std;
string a[1005];
int book[1005][205];
int n=0;
int flag;
void dfs(int x,int y)
{
if(x<0||y<0||x>=n||y>=a[x].size()||a[x][y]=='*') return;
a[x][y]='*';
dfs(x+1,y);
dfs(x-1,y);
dfs(x,y+1);
dfs(x,y-1);
}
int main()
{
int i,j,ans=0;
while(cin>>a[n]) {n++;}
for(i=0;i<n;i++)
{
for(j=0;j<a[i].size();j++)
{
if(i>0&&j>0&&i<n-1&&j<a[i].size()-1) continue;//if为真,不执行之后语句;
if(a[i][j]=='0') dfs(i,j);
}
}
dfs(0,2);
for(i=0;i<n;i++)
{
for(j=0;j<a[i].size();j++)
if(a[i][j]=='0') ans++;
}
cout<<ans;
return 0;
}