12345678901
2025-03-15 20:12:48
发布于:浙江
#include<bits/stdc++.h>
using namespace std;
int d[100010],n,k;
int main(){
cin>>n>>k;
for(int i=0;i<=100000;i++)d[i]=-1;
//1.起点入队
queue<int> q;
q.push(n);
d[n]=0;
//4.1重复2、3
while(q.size()){
//2.队首当节点
int r=q.front();
q.pop();
//4.2到达?
if(r==k){
cout<<d[k];
break;
}
//3.找相邻节点
if(r>0&&d[r-1]==-1){
q.push(r-1);
d[r-1]=d[r]+1;
}if(r<=100000&&d[r+1]==-1){
q.push(r+1);
d[r+1]=d[r]+1;
}if(2*r<=100000&&d[r*2]==-1){
q.push(r*2);
d[r*2]=d[r]+1;
}
}
return 0;
}
这里空空如也
有帮助,赞一个