【例题 6-12 UVA

【链接】 我是链接,点我呀:)
【题意】

在这里输入题意

【题解】

dfs..

【代码】

#include <bits/stdc++.h>
using namespace std;

const int N = 100;
const int dx[8] = {-1,-1,-1,0,0,1,1,1};
const int dy[8] = {-1,0,1,-1,1,-1,0,1};

int n,m;
string s[N+10];
bool bo[N+10][N+10];

void dfs(int x,int y){
	if (x <0 || x >=n || y<0 || y>=m || s[x][y]=='*') return;
	if (bo[x][y]) return;
	bo[x][y] = true;
	for (int i = 0;i < 8;i++)
		dfs(x+dx[i],y+dy[i]);
}

int main(){
//	freopen("rush.txt","r",stdin);
	while(~scanf("%d%d",&n,&m) && n){
		memset(bo,0,sizeof bo);
	 	for (int i = 0;i < n;i++) cin >> s[i];
		int cnt = 0;
		for (int i = 0;i < n;i++)
			for (int j = 0;j < m;j++)
				if (!bo[i][j] && s[i][j]!='*'){
					dfs(i,j);
					cnt++;
		        }
		printf("%d
",cnt);
	}
	return 0;
}
原文地址:https://www.cnblogs.com/AWCXV/p/7705739.html