求助!!
查看原帖
求助!!
556285
FBI_Hu_Tao楼主2022/7/11 11:56

A了一个点

#include<iostream>
using namespace std;
int flag;
int t[8][2]={{-1,-1},{-1,0},{-1,1},{0,-1},{0,1},{1,-1},{1,0},{1,1}};
int maxn=-1;
int n,m;
char a[1501][1501];
int b[1501];
int sum,ans;
void dfs(int x,int y){
   a[x][y]='.';
   sum++;
   for(int i=0;i<8;i++){
   	int xx=x+t[i][0];
   	int yy=y+t[i][1];
   	if(xx>0&&xx<=n&&yy>0&&yy<=m&&a[xx][yy]=='*'){
   		dfs(xx,yy);
   	}
   }
   return;
}
int main(){
   cin>>n>>m;
   for(int i=1;i<=n;i++){
   	for(int j=1;j<=m;j++){
   		cin>>a[i][j];
   	}
   }
   for(int i=1;i<=n;i++){
   	for(int j=1;j<=m;j++){
   		if(a[i][j]=='*'){
   			flag=0;
   			sum=0;
   			dfs(i,j);
   			for(int k=1;k<=ans;k++){
   				if(b[k]==sum){
   					flag=1;
   					b[k]+=sum;
   					break;
   				}
   			}
   			if(!flag)b[++ans]=sum;
   		}
   	}
   }
   for(int i=1;i<=ans;i++){
   	if(maxn<b[i])maxn=b[i];
   }
   cout<<ans<<" "<<maxn;
}
2022/7/11 11:56
加载中...