题目链接 点击打开链接
由于老长时间没做过Bfs的题了,就尴尬了
现在有时间就补完了
#include<cstdio> #include<iostream> #include<queue> #include<cstring> using namespace std; queue<int>q; int vis[100005]; int main() { int n,k; while(~scanf("%d%d",&n,&k)) { memset(vis,0,sizeof(vis)); while(!q.empty()){ q.pop(); } int sum=0; q.push(n); vis[n]=1; while(!q.empty()){ int temp=q.front(); q.pop(); if(temp-1>=0&&!vis[temp-1]){ q.push(temp-1); vis[temp-1]=vis[temp]+1; } if(temp+1<=100000&&!vis[temp+1]){ q.push(temp+1); vis[temp+1]=vis[temp]+1; } if(temp*2<=100000&&!vis[temp*2]){ q.push(temp*2); vis[temp*2]=vis[temp]+1; } if(vis[k]){ break; } } printf("%d\n",vis[k]-1); } return 0; }以上为代码