20分求调
查看原帖
20分求调
590717
cfl727楼主2024/6/2 09:25
#include <bits/stdc++.h>
using namespace std;
int n,m,dx[5]={0,0,-1,0,1},dy[5]={0,-1,0,1,0};
char f[105][105]={};
int  a[105][105];
void dfs(int n1,int m1){
	if(n1>n||m1>m||m1<0||n1<0)return ;
	a[n1][m1]=0;
	for(int i=1;i<=4;i++){
		if(a[n1+dx[i]][m1+dy[i]]){
			dfs(n1+dx[i],m1+dy[i]);
		}
	}
}
int total;
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++)cin>>f[i];
	for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)a[i][j]=f[i][j]-'0';
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			if(a[i][j]){
				total++;
				dfs(i,j);
			}
		}
	}
	cout<<total;
	return 0;
}
2024/6/2 09:25
加载中...