3 条题解

  • 0
    @ 2024-12-1 20:23:29
    #include<bits/stdc++.h>
    using namespace std;
    const int N = 1e5+10;
    int ans,dx[]={0,0,1,-1},dy[]={1,-1,0,0},n,m;
    char a[60][60];
    bool check(int x,int y)
    {
    	if(a[x][y]>='1'&&a[x][y]<='9')
    	    return 1;
    	return 0;
    }
    void dfs(int x, int y)
    {
    	a[x][y]='0';
    	for(int i = 0;i <= 3;i++)
    	{
    		int xx = x+dx[i];
    		int yy = y+dy[i];
    		if(check(xx,yy))
    		    dfs(xx,yy);
    	}
    }
    int main(){
    	cin >> n >> m;
    	for(int i = 1;i <= n;i++)
    	    cin >> a[i][j];
    	for(int i = 1;i <= n;i++)
    	{
    		for(int j = 1;j <= m;i++)
    		if(a[i][j]!='0')
    		{
    			ans++;
    			dfs(i,j);
    		}
    	}
    	cout << ans;
    	return 0;
    }
    

    信息

    ID
    2311
    时间
    1000ms
    内存
    256MiB
    难度
    6
    标签
    递交数
    320
    已通过
    101
    上传者