您的位置:首页 > 其它

HDU 1241 Oil Deposits(DFS)

2015-07-23 16:20 351 查看
题目链接:Click here

题意:油田,给定一个地图,’@’代表油田,’.’代表陆地,如果两个’@’相邻,是一块油田,求所给的图中有几块油田

思路:明显的DFS

#include <iostream>
#include <cstring>
#include <queue>
#include <cstdio>
#include <algorithm>
#include <cmath>

using namespace std;

char mapp[105][105];
int dir[8][2] = {{-1, -1}, {0, -1}, {0, 1}, {-1, 0}, {1, 0}, {1, -1}, {1, 1}, {-1, 1}};
int u, v, ans;

void DFS(int sx, int sy)
{
int x, y;
for(int i = 0; i < 8; i++)
{
x = sx + dir[i][0];
y = sy + dir[i][1];
if(x >= 0 && x < u && y >= 0 && y < v && mapp[x][y] == '@')
{
mapp[x][y] = '*';
DFS(x, y);
}
}
}

int main()
{
while(scanf("%d%d", &u, &v) != EOF)
{
if(u == 0 && v == 0)break;
getchar();
for(int i = 0; i < u; i++)
scanf("%s", mapp[i]);
ans = 0;
for(int i = 0; i < u; i++)
{
for(int j = 0; j < v; j++)
{
if(mapp[i][j] == '@')
{
mapp[i][j] = '*';
DFS(i, j);
ans++;
}
}
}
printf("%d\n", ans);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: