码迷,mamicode.com
首页 > 其他好文 > 详细

找油田

时间:2020-01-18 13:05:29      阅读:79      评论:0      收藏:0      [点我收藏+]

标签:oid   int   导致   题目   col   div   深搜   can   否则   

模板题,题目就不说了

思路就是新建一个标签数组,如果两个油田是联通的,那么他们的编号是相同的,然后进行遍历,每找到一块新的油田,那么标签+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\n", mark);
    }
    return 0;
}

找油田

标签:oid   int   导致   题目   col   div   深搜   can   否则   

原文地址:https://www.cnblogs.com/xdaniel/p/12208696.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!