0分求助
查看原帖
0分求助
915921
DougNo1楼主2024/8/24 10:03

代码:

#include <bits/stdc++.h>
using namespace std;
struct point{
	int x,y;
	bool b,c;
}a[110][110];

int n,m;
int dx[5] = {0,1,-1,0,0} , dy[5] = {0,0,0,1,-1};
void dg(int x1, int y1){
    for(int ii=1;ii<=4;ii++){
        int xx= a[x1][y1].x + dx[ii], yy= a[x1][y1].y + dy[ii];
		if(xx>0 && xx<=n && yy>0 && yy<=m && a[xx][yy].b==1 && a[xx][yy].c==0){
            a[xx][yy].c = 1;
		    dg(xx, yy);	
	    }
    }
}

int main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++){
		string s;
		cin>>s;
		for(int j=0;j<s.size();j++){
			if(s[j] == '0') a[i][j+1].b = 0;
			else a[i][j+1].b = 1;
			a[i][j+1].x = i;
			a[i][j+1].y = j;
			a[i][j+1].c = 0;
		}
    }
    
    int ans=0;
    for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			if(a[i][j].b == 1 && a[i][j].c == 0){
				dg(i,j);
				ans++;
			}
		}
    }
    
    cout<<ans;
    return 0;
}

提交记录

帮我的必被关注!

2024/8/24 10:03
加载中...