POJ1979 Red and Black 题解

原题

在这里插入图片描述
http://poj.org/problem?id=1979

题目大意

我还以为是八皇后那种呢……结果是走迷宫
. 能走,#不能走,然后输出@能走到的格子有多少个(包括自己)

题目分析

典型搜索题,走迷宫的基本都是搜索了,我还记得我当初做了一个学期这类题……这里还是写比较容易写的dfs

代码

#include<cstdio>
bool map[110][110];//当时n和m弄反了
int n,m,ans = 0;
void work(int x,int y)
{
    if (x < 0 || y < 0 || x >= n || y >= m) return;
    if (!map[x][y]) return;
    map[x][y] = false;
    ans++;
    work(x - 1,y);
    work(x,y - 1);work(x,y + 1);
    work(x + 1,y);
}

int main()
{
while (true)
{
    int nx,ny;
    ans = 0;
    scanf("%d%d",&m,&n);
    if (n == 0 && m == 0) break;
    getchar();
    for (int i = 0;i < n;i++)
    {
        char t;
        for (int j = 0;j < m;j++)
        {
            t = getchar();
            if (t == '.') map[i][j] = true;else map[i][j] = false;
            if (t == '@') 
            {
                map[i][j] = true;
                nx = i;
                ny = j;
            }
        }
        getchar();
    }
    work(nx,ny);
    printf("%d\n",ans);
}
return 0;
}

反思

这题的n,m竟然是反过来的,我卡了10多分钟……查错果然太菜了
因为这题是直接复制poj2386然后改的,所以没有用dir[]来简化而是直接写了4个work,应该不会被打死吧……

发布了13 篇原创文章 · 获赞 0 · 访问量 149

猜你喜欢

转载自blog.csdn.net/juseice/article/details/103953153