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

POJ1979 Red and Black 走黑砖【DFS】

时间:2018-03-31 23:59:54      阅读:308      评论:0      收藏:0      [点我收藏+]

标签:++   pre   传送门   printf   style   连通   post   div   char   

题目链接

 

题目大意:

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

 

#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】

标签:++   pre   传送门   printf   style   连通   post   div   char   

原文地址:https://www.cnblogs.com/00isok/p/8684721.html

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