50分求助!!
查看原帖
50分求助!!
311502
逸之为一楼主2020/8/18 12:15
#include<bits/stdc++.h>
using namespace std;
const int maxn=10000;
string a[maxn+10];
int ans;
struct node{
	int x,y;	
}que[maxn+10];
int tail,top;
int n,m;
int bx[4]={-1,0,1,0};
int by[4]={0,1,0,-1};
node b;
int xx,yy;
int main(){
	cin>>n>>m;
	for(int i=0;i<n;i++) cin>>a[i]; 输入
	for(int i=0;i<n;i++){
		for(int j=0;j<m;j++){
			if(a[i][j]>='1' && a[i][j]<='9'){ 
				ans++;   判断是不是细胞
				tail=0;
				top=0;
				b.x=i;  存下表
				b.y=j;
				a[i][j]='0';  复制为0
				que[++tail]=b;
				while(tail>top){ 
					b=que[++top]; 
					for(int k=0;k<4;k++){
						int xx=b.x+bx[k];
						int yy =b.y+by[k];
						if(xx<0||xx>n-1||yy<0||yy>m-1||a[xx][yy]=='0') continue; 
						b.x=xx; 超出范围continue;
						b.y=yy;
						a[xx][yy]='0';
						que[++tail]=b; 
					}
				}
			}
		}
	}
	cout<<ans;
} 
2020/8/18 12:15
加载中...