1 条题解

  • 0
    @ 2023-6-11 12:16:47

    C++ :

    #include <bits/stdc++.h>
    using namespace std;
    int n,m,c;
    char s[110][110];//二维字符数组
    bool f[110][110];
    int fx[] = {1,0,-1,0};
    int fy[] = {0,1,0,-1};
    
    
    //从x,y点开始遍历 
    void fun(int x,int y){
    	int i,dx,dy;
    	//尝试四个方向
    	for(i = 0;i < 4;i++){
    		dx = x + fx[i];
    		dy = y + fy[i];
    		
    		if(dx >= 1 && dx <= n && dy >= 1 && dy <= m && f[dx][dy] == false && s[dx][dy] == '#'){
    			f[dx][dy] = true;//标记为走过
    			fun(dx,dy); 
    		}
    	} 
    }
     
    
    
    int main(){
    	int i,j;
    	cin>>n>>m;
    	for(i = 1;i <= n;i++){
    		for(j = 1;j <= m;j++){
    			cin>>s[i][j];
    		}
    	}
    	
    	//遍历
    	for(i = 1;i <= n;i++){
    		for(j = 1;j <= m;j++){
    			//没走过,且是草丛 
    			if(f[i][j] == false && s[i][j] == '#'){
    				c++;
    				f[i][j] = true;
    				fun(i,j);
    			}
    		}
    	} 
    	
    	cout<<c<<endl;
        return 0;
    }
    
    
    • 1

    信息

    ID
    2303
    时间
    1000ms
    内存
    64MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者