广搜法
2024-12-31 18:42:22
发布于:广东
45阅读
0回复
0点赞
看到各位大佬都是没有搜索,但是我看到这题,第一时间想到的就是搜索,接下来展示广搜代码
#include<iostream>
#include<queue>
using namespace std;
int n,m;
char a[105][105];
int vis[105][105];
int dx[4]={1,0,-1,0};
int dy[4]={0,1,0,-1};
struct node{
int x,y,step;
};
void bfs(int v,int w,int st,int en){
vis[v][w]=1;
queue<node> q;
q.push({v,w,0});
while(!q.empty()){
node n1 = q.front();
q.pop();
if(n1.x==st && n1.y==en){
cout<<n1.step;
return;
}
for(int i=0;i<4;i++){
int nx=n1.x+dx[i];
int ny=n1.y+dy[i];
if(nx>=1 && nx<=n && ny>=1 && ny<=m && !vis[nx][ny]){
vis[nx][ny]=1;
q.push({nx,ny,n1.step+1});
}
}
}
cout<<-1;
}
int main(){
cin>>n>>m;
vector<int> g;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>a[i][j];
}
}
int v=0,w=0,st=0,en=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(a[i][j]=='o'){
g.push_back(i);
g.push_back(j);
}
}
}
v=g[0];
w=g[1];
st=g[2];
en=g[3];
bfs(v,w,st,en);
return 0;
}
不是,这题都搜索了怎么还是入门???
全部评论 1
看正解就知道了
2025-01-05 来自 广东
0
有帮助,赞一个