广度优先搜索
2025-03-15 10:42:45
发布于:浙江
2阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
int n,k;
int a[100010];
bool vis[100010];
int main(){
cin>>n>>k;
queue<int> q;
q.push(n);
a[n]=0;
vis[n]=true;
while(q.size()){
int r=q.front();
q.pop();
if(r==k){
cout<<a[k]<<endl;
break;
}
if(r+1<=100000&&vis[r+1]==false){
q.push(r+1);
vis[r+1]=true;
a[r+1]=a[r]+1;
}
if(r-1>=0&&vis[r-1]==false){
q.push(r-1);
vis[r-1]=true;
a[r-1]=a[r]+1;
}
if(2r<=100000&&vis[2r]==false){
q.push(2r);
vis[2r]=true;
a[2*r]=a[r]+1;
}
}
}
这里空空如也
有帮助,赞一个