题目链接:http://poj.org/problem?id=1562
----------------------------------------------------------------------------------------------------------------------------------------------------------
欢迎光临天资小屋:http://user.qzone.qq.com/593830943/main
----------------------------------------------------------------------------------------------------------------------------------------------------------
Description
Input
Output
Sample Input
1 1 * 3 5 *@*@* **@** *@*@* 1 8 @@****@* 5 5 ****@ *@@*@ *@**@ @@@*@ @@**@ 0 0
Sample Output
0 1 2 2
Source
代码如下:
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
#define TM 117
int n, m, ans, k;
char map[TM][TM];
int vis[TM][TM];
int xx[8] = {1,1,1,0,-1,-1,-1,0};
int yy[8] = {1,0,-1,-1,-1,0,1,1};
void dfs(int x, int y)
{
	vis[x][y] = 1;
	for(int i = 0; i < 8; i++)
	{
		int dx = x+xx[i];
		int dy = y+yy[i];
		if(dx>=0&&dx<n&&dy>=0&&dy<m&&map[dx][dy]=='@'&&!vis[dx][dy])
		{
			vis[dx][dy] = 1;
			dfs(dx,dy);
		}
	}
}
int main()
{
	int i, j;
	while(cin>>n>>m)
	{
		if(n==0 && m==0)
		break;
		memset(vis,0,sizeof(vis));
		k = 0;
		for(i = 0; i < n; i++)
		{
			cin>>map[i];
		}
		for(i = 0; i < n; i++)
		{
			for(j = 0; j < m; j++)
			{
				if(map[i][j] == '@' && !vis[i][j])
				{
					dfs(i,j);
					k++;		
				}
			}
		}
		cout<<k<<endl;
	}
	return 0;
}
poj1562 Oil Deposits(深搜dfs),布布扣,bubuko.com
原文地址:http://blog.csdn.net/u012860063/article/details/37822791