样例过了,求调
查看原帖
样例过了,求调
496009
黄舀啊楼主2022/3/22 18:19
#include<bits/stdc++.h>
using namespace std;

bool mp[110][110],vis[110][110];
int m,n,cnt;
int xx[8] = {-1,1,0,0,1,-1,1,-1};
int yy[8] = {0,0,-1,1,1,-1,-1,1};

void dfs(int x,int y){
	vis[x][y] = 1;
	for(int i=0 ; i<8 ; i++){
		int dx = x+xx[i],dy = y+yy[i];
		if(dx>=1&&dx<=m&&dy>=1&&dy<=n&&!mp[dx][dy]&&!vis[dx][dy]){
			dfs(dx,dy);
		}
	}
	return ;
}

int main(){
	
	while(true){
		cnt = 0;
		memset(vis,0,sizeof(vis));
		cin >> m >> n;
		if(m == 0 && n == 0)
			return 0;
		for(int i=1 ; i<=m ; i++)
			for(int j=1 ; j<=n ; j++){
				char c;
				cin >> c;
				if(c == '*') mp[i][j] = 1;
			}
		/*for(int i=1 ; i<= m ; i++){
			for(int j=1 ; j<=n ; j++){
				cout<<mp[i][j];
			}
			cout << endl;
		}*/
		for(int i=1 ; i<= m ; i++)
			for(int j=1 ; j<=n ; j++)
			if(!mp[i][j]&&!vis[i][j]){
				cnt ++;
				dfs(i,j);
			}
		cout << cnt << endl;
	}
	
	return 0;
} 
2022/3/22 18:19
加载中...