1 solutions

  • 0
    @ 2025-3-3 16:24:11

    C++ :

    #include<bits/stdc++.h>
    using namespace std;
    
    int n,m;
    char a[110][110];
    int fx[5] = {0,0,1,0,-1};
    int fy[5] = {0,1,0,-1,0};
    int c;//有几片
    int ma;//最大的面积
    int s;//记录总面积
    int t;//每一片的面积 
    
    void dfs(int x,int y){
    	a[x][y] = '~';
    	t++;
    	
    	int tx,ty;
    	for(int i = 1;i <= 4;i++){
    		tx = x + fx[i];
    		ty = y + fy[i];
    		
    		if(a[tx][ty] == '*'){
    			dfs(tx,ty);
    		}
    	}
    } 
    
    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] == '*'){
    				c++;
    				t = 0;
    				dfs(i,j);
    				s = s + t;
    				ma = max(ma,t); 
    			}
    		}
    	}
    	
    	cout<<c<<" "<<s<<" "<<ma;
    	return 0;
    }
    
    
    
    • 1

    Information

    ID
    10054
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    (None)
    Tags
    # Submissions
    0
    Accepted
    0
    Uploaded By