欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

例题6-12 UVA 572 Oil Deposits

程序员文章站 2022-05-28 15:19:04
...

模板题。

#include <bits/stdc++.h>
using namespace std;
int n, m, X[8] = {-1, 0, 1, 1, 1, 0, -1, -1}, Y[8] = {-1, -1, -1, 0, 1, 1, 1, 0};
char matrix[105][105];
void DFS(int x, int y)
{
	matrix[x][y] = '*';
	for(int i = 0; i < 8; i++){
		int tempx = x + X[i], tempy = y + Y[i];
		if(matrix[tempx][tempy] == '@') DFS(tempx, tempy);
	}
}
int main()
{
	while(scanf("%d%d", &n, &m) != EOF){
		if(!n && !m) break;
		int ans = 0;
		for(int i = 0; i < n; i++){
			scanf("%s", matrix[i]);
		}
		for(int i = 0; i < n; i++){
			for(int j = 0; j < m; j++){
				if(matrix[i][j] == '@'){
					DFS(i, j);
					ans++;
				}
			}
		}
		printf("%d\n", ans);
	}
	return 0;
}