题意很简单 :给你一个row*col的矩阵,上面的'#'代表你不能走的地方,'.'表示你能走的地方,'@'表示你的起点,问你最多能走多少格。
这也是一道非常基础的DFS题,我们来看一下代码实现:
#include <stdio.h>
#include <string.h>
#define MAXN 20 + 10
char graph[MAXN][MAXN];
int m, n;
int result;
void DFS(int p, int q)
{
if(p <= m - 1 && p >= 0 && q >= 0 && q <= n - 1 && graph[p][q] == '.')
{
result++;
graph[p][q] = '#';
}else {
return;
}
DFS(p - 1, q);
DFS(p, q - 1);
DFS(p, q + 1);
DFS(p + 1, q);
}
int main()
{
int i, j;
int p, q;
while(scanf("%d%d", &n, &m) && m != 0)
{
result = 0;
memset(graph, 0, sizeof(graph));
for(i = 0; i < m; i++)
for(j = 0; j < n; j++)
{
scanf("\n%c", &graph[i][j]);
if(graph[i][j] == '@')
{
p = i;
q = j;
graph[i][j] = '.';
}
}
DFS(p , q);
printf("%d\n", result);
}
return 0;
}