题解
【入门】污染治理
1 条题解
-
0
#include<bits/stdc++.h> using namespace std; char a[105][105]; bool b[105][105]; int n,m; int fx[10]={0,-1,0,1,0}; int fy[10]={0,0,1,0,-1}; int f(int x,int y){ b[x][y]=1;//标记访问过 int mj=1;//一个格子面积为1 for(int i=1;i<=4;i++){ int tx=x+fx[i]; int ty=y+fy[i]; //在范围内,被污染,未被访问 if(tx>=1&&tx<=n&&ty>=1&&ty<=m&&a[tx][ty]=='*'&&b[tx][ty]==0){ mj+=f(tx,ty);//找到一个符合的数+1 } } return mj; } int main() { cin>>n>>m; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ cin>>a[i][j]; } } int c=0;//污染区域 int maxn=0;//最大区域 int s=0;//总区域 for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ //还没找过,且有污染的区域 if(b[i][j]==0&&a[i][j]=='*'){ c++;//污染区域+1 int x=f(i,j);//找污染面积 s+=x;//总面积 maxn=max(x,maxn);//找最大污染面积 } } } cout<<c<<" "<<s<<" "<<maxn; return 0; }
- 1