两个按钮
2025-01-23 10:47:49
发布于:上海
#include<bits/stdc++.h>
using namespace std;
int dist[20010];//把n变成i需要多少次操作
int main(){
int n,m;
cin>>n>>m;
//n = 1 m = 2
// m [1,20000]
queue<int> q;
for(int i=0;i<=20000;i++)dist[i]=1e9;
q.push(n);
dist[n] = 0;
while(q.size()){
int top = q.front();
q.pop();
int caozuo1 = top * 2;
int caozuo2 = top - 1;
if(caozuo2>0 && caozuo2<=20000){
if(dist[caozuo2]>dist[top]+1){
dist[caozuo2]=dist[top]+1;
q.push(caozuo2);
}
}
if(caozuo1>0 && caozuo1<=20000){
if(dist[caozuo1]>dist[top]+1){
dist[caozuo1]=dist[top]+1;
q.push(caozuo1);
}
}
}
cout<<dist[m];
return 0;
}
这里空空如也
有帮助,赞一个