1 条题解
-
0
思路
整数轴含倍增的最短操作,处理零点、相等及向后移动。
参考程序(C++11)
#include <bits/stdc++.h> using namespace std; int main(){int n,k;cin>>n>>k;if(n>=k){cout<<n-k<<'\n';return 0;}vector<int>d(200001,-1);queue<int>q;q.push(n);d[n]=0;while(!q.empty()){int x=q.front();q.pop();if(x==k){cout<<d[x]<<'\n';return 0;}for(int v:{x-1,x+1,2*x})if(v>=0&&v<=200000&&d[v]<0){d[v]=d[x]+1;q.push(v);}}}
- 1