POJ1979 Red and Black 走黑砖DFS

Posted 00isok

tags:

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

题目链接

 

题目大意:

求图中最大‘.‘的连通块,输出该最大连通块的块数

 

#include <cstdio>
int n, m, res;
int dir[4][2] = { 1,0,0,1,-1,0,0,-1 };
char map[30][30];

void dfs(int i, int j)
{
    map[i][j] = #;
    res++;
    for (int k = 0; k < 4; k++)
    {
        int x = i + dir[k][0];
        int y = j + dir[k][1];
        if (x < 0 || y < 0 || x >= n || y >= m)continue;
        if (map[x][y] == .)dfs(x, y);        //由于dfs运用递归延伸出很多条路径,res的最终值为所达路径的最大联通块数量
                                               //但是为什么不用一个max数来保存当前的最大连通快的数值,res++就能做到这样的效果,即,为什么res++就能做到最终输出的res是
    }                                          //最大连通块的数量,是因为最大连通块的路径运行的时间最久吗,所以最后res的值为要求的值
}

int main()
{
    int i, j, x, y;
    while (scanf("%d%d", &m, &n) != EOF, n || m)
    {
        for (i = 0; i < n; i++)scanf("%s", map[i]);
        for(i=0;i<n;i++)
            for (j = 0; j < m; j++)
            {
                if (map[i][j] == @)
                {
                    x = i;
                    y = j;
                }
            }
        res = 0;
        dfs(x, y);
        printf("%d\n", res);
    }
    return 0;
}

 

2018-03-31

以上是关于POJ1979 Red and Black 走黑砖DFS的主要内容,如果未能解决你的问题,请参考以下文章

POJ 1979 Red and Black

Red and Black(poj-1979)

POJ1979 Red and Black

POJ1979 Red and Black

poj-1979 red and black(搜索)

poj1979 Red and Black