求助,90分代码
查看原帖
求助,90分代码
1285635
yhr80911578楼主2024/8/22 11:09

#include<bits/stdc++.h>

using namespace std;
int a[65][65];
int m,n,sum=0;
 
struct man{
	int x;
	int y;
};
queue<struct man> q;
void scan(int i,int j){
	int k,ni,nj;
	int dx[4]={-1,1,0,0};
	int dy[4]={0,0,-1,1};
	struct man p;
	p.x=i; p.y=j;
	q.push(p); 
	while(!q.empty())  
	{
		p=q.front(); 
		q.pop(); 
		i=p.x; j=p.y;
		if(a[i][j]>=1&&a[i][j]<=9){
			a[i][j]=-1;
			for(k=0;k<=3;k++)
			{
				ni=i+dx[k];
				nj=j+dy[k];
				if(1<=ni&&ni<=m&&1<=nj&&nj<=n&&a[ni][nj]!=-1&&a[ni][nj]!=0) {
					p.x=ni; p.y=nj;
					q.push(p);	
				}	
			} 
		} 
	}
	sum++;
} 
int main(){
	cin>>m>>n;
	char q[65][65];
	for(int i=1;i<=m;i++){
		for(int j=1;j<=n;j++){
			cin>>q[i][j];	
			a[i][j]=q[i][j]-'0';
		}	
	} 
	
		
 
	for(int i=1;i<=m;i++)
	{
		for(int j=1;j<=n;j++)
		{
			if(a[i][j]>=1&&a[i][j]<=9)
			{
					scan(i,j);
			}
					
		}
	}
 
	cout<<sum;
	return 0;
}
              
2024/8/22 11:09
加载中...