解:
2025-07-06 17:28:25
发布于:浙江
8阅读
0回复
0点赞
dfs部分:
void dfs(int x,int y){
for(int i = 0;i<4;i++){
int nx = x+dx[i];
int ny = y+dy[i];
if(nx<1||nx>n||ny<1||ny>m) continue;
if(a[nx][ny]!='.') continue;
ans++;
a[nx][ny] = '#';
dfs(nx,ny);
}
}
完整代码:
#include<bits/stdc++.h>
using namespace std;
char a[55][55];
int n,m,sx,sy,ans = 0;
int dx[] = {0,-1,0,1},dy[] = {-1,0,1,0};
void dfs(int x,int y){
for(int i = 0;i<4;i++){
int nx = x+dx[i];
int ny = y+dy[i];
if(nx<1||nx>n||ny<1||ny>m) continue;
if(a[nx][ny]!='.') continue;
ans++;
a[nx][ny] = '#';
dfs(nx,ny);
}
}
int main(){
cin>>n>>m;
for(int i = 1;i<=n;i++){
for(int j = 1;j<=m;j++){
cin>>a[i][j];
if(a[i][j] == '@'){
sx = i,sy = j;
}
}
}
a[sx][sy] = '#';
ans++;
dfs(sx,sy);
cout<<ans;
return 0;
}
这里空空如也
有帮助,赞一个