原题
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,应该不会被打死吧……