题解!!!| 入门???
2025-07-30 11:15:56
发布于:江苏
1阅读
0回复
0点赞
打卡题解
#include <bits/stdc++.h>
using namespace std;
int w,h,a,b;
char mp[1005][1005];
int maxn = 1;
int vis[1005][1005];
int dir1[10] = {0,0,-1,1};
int dir2[10] = {1,-1,0,0};
void dfs(int x, int y){
vis[x][y] = 1;
for(int i = 0 ; i < 4; i++){
int nx = x + dir1[i];
int ny = y + dir2[i];
if(nx >= 1 && ny >= 1 && nx <= h && ny <= w && mp[nx][ny] == '.' && vis[nx][ny] == 0){ //判断可不可以走,1.有没有越界 2.能不能走 3.走没走过
maxn++;
dfs(nx,ny); //递归
}
}
}
int main(){
cin >> w >> h;
for(int i = 1; i <= h; i++){
for(int j = 1; j <= w; j++){
cin >> mp[i][j];
if(mp[i][j] == '@'){ //如果遇到 @ 先把它变成 .
a = i;
b = j;
mp[i][j] = '.';
}
}
}
dfs(a,b);
cout << maxn;
return 0;
}
这里空空如也
有帮助,赞一个