找油田

Posted xdaniel

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了找油田相关的知识,希望对你有一定的参考价值。

模板题,题目就不说了

思路就是新建一个标签数组,如果两个油田是联通的,那么他们的编号是相同的,然后进行遍历,每找到一块新的油田,那么标签+1,标签即答案

代码如下:

#include <cstdio>
char grid[105][105];
int tag[105][105];
int n, m;
void dfs(int x, int y, int mark)
{
    //越界检查
    if(x < 0||y < 0||x >= n||y >= m)
        return;
    //若不是油田或者已经被标记了
    if(grid[x][y] == *||tag[x][y])
        return;
    //至此,该坐标符合条件
    tag[x][y] = mark;
    for (int i = -1; i < 2;++i)
        for (int j = -1; j < 2;++j)
        //不对自己进行深搜,否则导致无限递归
        if(!(i == 0&&j == 0))
            dfs(x + i, y + j, mark);
}
int main()
{
    int mark;
    while(scanf("%d%d",&n,&m) != EOF) {
        if(n == 0)
            break;
        //初始化
        mark = 0;
        for (int i = 0; i < n;++i)
            for (int j = 0; j < m;++j)
                tag[i][j] = 0;
        //输入
        for (int i = 0; i < n; i++)
            scanf("%s", grid[i]);
        //进行深搜
        for (int i = 0; i < n;i++)
            for (int j = 0; j < m;j++)
            if(grid[i][j] == @&&!tag[i][j])
                dfs(i, j, ++mark);
        printf("%d
", mark);
    }
    return 0;
}

以上是关于找油田的主要内容,如果未能解决你的问题,请参考以下文章

DFS-油田问题

hdu1241 油田计数

DFS-油田问题

学习 PyQt5。在我的代码片段中找不到错误 [关闭]

Oil Deposits(油田问题)

油田(Oil Deposits)-用DFS求连通块