1 条题解

  • 2
    @ 2026-7-26 14:32:09
    #include<bits/stdc++.h>
    using namespace std;
    int n,m,ans;
    char a[111][111];
    int dx[]={0,1,0,-1};
    int dy[]={1,0,-1,0};
    void dfs(int x,int y){
    	if(x<=0 || y<=0 || x>n ||y>m){
    		return;
    	}
    	for(int i=0;i<4;++i){
    		int nx=x+dx[i],ny=y+dy[i];
    		if(a[nx][ny]!='0'){
    			a[nx][ny]='0';
    			dfs(nx,ny);
    		}
    	}
    }
    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]!='0'){
    				a[i][j]='0';
    				dfs(i,j);
    				ans++;
    			}
    		}
    	}
    	cout<<ans;
    	return 0;
    }
    • 1

    信息

    ID
    205
    时间
    1000ms
    内存
    128MiB
    难度
    4
    标签
    递交数
    5
    已通过
    3
    上传者