3 条题解
-
1
#include <bits/stdc++.h> using namespace std; queue<int>q; int dis[200005]; int main() { memset(dis,-1,sizeof(dis)); int n,k,ans=0; cin>>n>>k; dis[n]=0; q.push(n); while (q.size()>0){ int now=q.front(); q.pop(); if (nowk){ ans=dis[now]; cout<<ans; return 0; } if (now>0 && dis[now-1]-1){ dis[now-1]=dis[now]+1; q.push(now-1); } if (now<=100000 && dis[now+1]-1){ dis[now+1]=dis[now]+1; q.push(now+1); } if (now<=100000 && dis[now*2]-1){ dis[now2]=dis[now]+1; q.push(now2); } } return 0; }
-
0
#include <bits/stdc++.h> using namespace std; queue<int>q; int dis[200005]; int main() { memset(dis,-1,sizeof(dis)); int n,k,ans=0; cin>>n>>k; dis[n]=0; q.push(n); while (q.size()>0){ int now=q.front(); q.pop(); if (now==k){ ans=dis[now]; cout<<ans; return 0; } if (now>0 && dis[now-1]==-1){ dis[now-1]=dis[now]+1; q.push(now-1); } if (now<=100000 && dis[now+1]==-1){ dis[now+1]=dis[now]+1; q.push(now+1); } if (now<=100000 && dis[now*2]==-1){ dis[now*2]=dis[now]+1; q.push(now*2); } } return 0; }
- 1
信息
- ID
- 427
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 6
- 标签
- 递交数
- 21
- 已通过
- 10
- 上传者