简单的搜索,用dfs或bfs都能过
2025-08-03 14:23:04
发布于:北京
7阅读
0回复
0点赞
下面是bfs代码,不放dfs是因为dfs的写法比这个简单
#include<bits/stdc++.h>
using namespace std;
int n,m,sx,sy,ans=1;
char mp[55][55];
bool vis[55][55];
const int dx[4]={0,1,0,-1};
const int dy[4]={1,0,-1,0};
struct node{
int x,y,step;
};
int main() {
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>mp[i][j];
if(mp[i][j]'@')sx=i,sy=j;
if(mp[i][j]'#')vis[i][j]=true;
}
}
vis[sx][sy]=true;
queue<node>q;
q.push({sx,sy,0});
while(!q.empty()){
node nw=q.front();
q.pop();
for(int i=0;i<4;i++){
int nx=nw.x+dx[i];
int ny=nw.y+dy[i];
if(nx>=1&&nx<=n&&ny>=1&&ny<=m&&!vis[nx][ny]){
vis[nx][ny]=true;
q.push({nx,ny,nw.step+1});
ans++;
}
}
}
cout<<ans<<endl;
return 0;
}
全部评论 1
第一次发题解,黄色部分是意外造成,与实际代码无关
2025-08-03 来自 北京
0
有帮助,赞一个