现在的位置: 首页 > 综合 > 正文

hdu – 1312 – Red and Black

2014年01月09日 ⁄ 综合 ⁄ 共 602字 ⁄ 字号 评论关闭

题意:求一个H*W的地图中一指定的起点的连通的黑色格子有多少个。

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1312

——>>简单dfs。

#include <cstdio>

using namespace std;

const int maxn = 20 + 10;
char MAP[maxn][maxn];
int W, H, sx, sy, cnt;
int dx[] = {-1, 1,  0, 0};
int dy[] = { 0, 0, -1, 1};

void dfs(int x, int y)
{
    for(int i = 0; i < 4; i++)
    {
        int newx = x + dx[i];
        int newy = y + dy[i];
        if(newx >= 0 && newx < H && newy >= 0 && newy < W && MAP[newx][newy] == '.')
        {
            MAP[newx][newy] = '#';
            cnt++;
            dfs(newx, newy);
        }
    }
}
int main()
{
    int i, j;
    while(scanf("%d%d", &W, &H) == 2)
    {
        if(!W && !H) return 0;
        for(i = 0; i < H; i++)
        {
            getchar();
            for(j = 0; j < W; j++)
            {
                MAP[i][j] = getchar();
                if(MAP[i][j] == '@')
                {
                    sx = i;
                    sy = j;
                }
            }
        }
        cnt = 1;
        dfs(sx, sy);
        printf("%d\n", cnt);
    }
    return 0;
}

抱歉!评论已关闭.