题目:
题解:
#include<stdio.h>
int w, h;
char arr[20][20]; //初始值数组
int t[20][20]; //判断是否被选择的数组
int dx[4] = { 0,0,-1,1 };
int dy[4] = { 1,-1,0,0 };
int count = 1; //计数器
void dfs(int x, int y)
{
for (int i = 0; i < 4; i++) //暴力穷举每一个位置的所有可能性
{
int a = x + dx[i], b = y + dy[i]; //测试位置
if (a >= h || a < 0 || b >= w || b < 0 || arr[a][b] != '.' || t[a][b]) //行列限制,元素限制
{
continue;
}
t[a][b] = 1;
count++;
dfs(a, b);
}
}
int main()
{
scanf("%d %d", &w, &h);
for (int i = 0; i < h; i++) //初始化数据
{
scanf("%s", arr[i]);
}
for (int i = 0; i < h; i++) //寻找初始点
{
for (int j = 0; j < w; j++)
{
if (arr[i][j] == '@')
dfs(i, j);
}
}
printf("%d", count);
return 0;
}
标签:count,arr,20,入门,int,迷宫,dfs,++,算法
From: https://blog.csdn.net/2301_79580018/article/details/137156189