在acwing等其他平台没有任何问题。求大佬看看
#include <iostream>
using namespace std;
const int N = 25;
bool st[N][N];
char map[N][N];
int dx[] = {-1, 0, 1, 0};
int dy[] = {0, 1, 0, -1};
int n, m, ans = 1;
void dfs(int x, int y){
st[x][y] = true;
for(int i = 0; i < 4; ++ i){
int tx = x + dx[i], ty = y + dy[i];
if(tx <= 0 || tx > n || ty <= 0 || ty > m) continue;
if(map[tx][ty] == '.' && !st[tx][ty]){ // 可以走的地方
ans ++;
dfs(tx, ty);
}
}
}
int main(){
scanf("%d %d", &m, &n);
int x, y;
for(int i = 1; i <= n; ++ i){
getchar();
for(int j = 1; j <= m; ++ j){
map[i][j] = getchar();
if(map[i][j] == '@') x = i, y = j;
}
}
dfs(x, y);
printf("%d", ans);
// for(int i = 1; i <= n; ++ i){
// for(int j = 1; j <= m; ++ j){
// putchar(map[i][j]);
// }
// puts("");
// }
return 0;
}