Farmer John has been informed of the location of a fugitive cow and wants to catch her immediately. He starts at a point N (0 ≤ N ≤ 100,000) on a number line and the cow is at a point K (0 ≤ K ≤ 100,000) on the same number line. Farmer John has two modes of transportation: walking and teleporting.

* Walking: FJ can move from any point X to the points - 1 or + 1 in a single minute * Teleporting: FJ can move from any point X to the point 2 × X in a single minute.

If the cow, unaware of its pursuit, does not move at all, how long does it take for Farmer John to retrieve it?

Input

Line 1: Two space-separated integers: N and K

Output

Line 1: The least amount of time, in minutes, it takes for Farmer John to catch the fugitive cow.

Sample Input

5 17

Sample Output

4

Hint

The fastest way for Farmer John to reach the fugitive cow is to move along the following path: 5-10-9-18-17, which takes 4 minutes.
 
一道bfs,开始考虑模拟,后来发现条件很多要考虑的东西太多了,就用了bfs
然后就是想界限问题,开始觉得要尽量小,后来看了别人代码再看数据觉得直接用题目中的数据做界限可以出结果
接着是各种调bug,其实方法一开始就写对了,但因为中间一两行代码的错误和没有发现导致不停的错
唉~今天的第二次了,第一次调了半个多小时,第二次直接调了一个半小时
#include<iostream>
#include<cstdio>
#include<queue>
#include<cstring>
#include<cmath>
using namespace std;
#define maxn 100010
int n,k,vis[maxn];
struct node{
int x,step;
};
void bfs(){
node p;
p.x = n,p.step = ;
vis[n] = ;
queue<node> q;
q.push(p);
while(!q.empty()){
node tmp = q.front();
q.pop();
if(tmp.x == k){
cout << tmp.step << endl;
return;
}
for(int i=;i<;i++){
int xx;
if(i == ){
xx = tmp.x + ;
}
else if(i == ){
xx = tmp.x - ;
}
else xx = tmp.x * ;
if(xx < || xx > maxn){
continue;
}
if(!vis[xx]){
vis[xx] = ;//注意vis数组
node tp;//这里新建一个结构体对象,不要在原来的tmp上加减!!! 在这里调了一个半小时!!!
tp.x = xx;
tp.step = tmp.step + ;
q.push(tp);
}
}
}
}
int main(){
while(cin >> n >> k){
memset(vis,,sizeof(vis));
if(n<k){
bfs();
}
else{
cout << n - k << endl;
}
}
return ;
}

最新文章

  1. 系统吞吐量(TPS)、用户并发量
  2. 关于delphi点击webbrowser中任意一点的问题
  3. WinForm程序执行JS代码的多种方法以及使用WebBrowser与JS交互
  4. 关于JavaScript测试工具:QUnit, Jasmine, MoCha
  5. 【Permutations II】cpp
  6. uva 11627
  7. 《深入Java虚拟机学习笔记》- 第5章 Java虚拟机
  8. 文件I/O(不带缓冲)之open函数
  9. HW4.43
  10. php——会话控制
  11. Object-c学习之路五(@protocol协议)
  12. 从Ubunt的安装到hadoop集群的搭建
  13. NET Framework 版本和依赖关系
  14. Python学习_09_模块
  15. tensorflow 学习
  16. Ubuntu16.04搭建QingdaoU(docker一键式部署)
  17. 【Linux】CentOS 7.2 安装 MySQL 5.7.21 解压版
  18. Java Web(六) EL表达式
  19. What really happens when you navigate to a URL
  20. mp4v2 基本知识

热门文章

  1. 有容云:上车 | 听老司机谈Docker安全合规建设
  2. spark shuffle写操作三部曲之UnsafeShuffleWriter
  3. oracle-11g2下载安装笔记
  4. 使用Arthas 获取Spring ApplicationContext还原问题现场
  5. Codeforces 468C Hack it!
  6. C#连接Oracle数据库字符串(引入DLL)
  7. Java下载文件方法
  8. 百度Echarts,蚂蚁金服G2,D3三种主流可视化工具对比
  9. 消息中间件——RabbitMQ(二)各大主流消息中间件综合对比介绍!
  10. Salesforce LWC学习(四) 父子component交互 / component声明周期管理 / 事件处理