题目描述
花花经过长时间的研究,终于研发出了能够跃迁的宇宙飞船。现在,他想要前往致远星。假设地球和致远星都在一个坐标轴上,其中地球位于坐标n,而致远星位于坐标k。而花花的飞船支持以下两种运动方式:

飞行:在一个时间单位中,能够从坐标x移动到x-1或x+1;
跃迁:在一个时间单位中,能够直接从x跃迁到2x。
现在,花花想知道,他需要多长时间才能到达致远星?

输入描述
两个值,分别代表n和k。(0 ≤ n, k ≤ 100,000)

输出描述
输出花花最少需要的时间。

样例输入
5 17

样例输出
4

样例解释
花花的行走轨迹为:5-10-9-18-17

题目分析
解题方向:因为这是考察搜索的题组里的题,所以先想到搜索,总之我先用的DFS,但在两三次的TLE以及问同学后,才有意识地使用BFS,毕竟BFS相比于DFS,算是用空间换了时间
然后也没啥分析的了,直接放代码

#include<iostream>
#include<queue>
//#include<bits/stdc++.h>//因为OJ没有这个万能头文件,就没用
using namespace std;bool flag[100010];//标记该位置是否走过
int num[100010];//存放从起点到某位置所需步数
queue<int>q;//队列 int bfs(int b,int e)
{int temp,t,i;q.push(b);//先将起点放入队列中 flag[b]=1;//标记为走过 num[b]=0;//无用之举,仅方便理解 while(q.size())//队列不为空则继续循环 {t=q.front();//提取队首元素 q.pop();//队首出队for(i=1;i<=3;i++){switch(i)//依次尝试三种操作 {case 1:temp=t+1;break;case 2:temp=t-1;break;case 3:temp=t*2;break;}if(temp<0||temp>100000)continue;//越界 if(flag[temp]==1)//该位置已来过 {continue;}q.push(temp); //入队 flag[temp]=1;//标记为已来过 num[temp]=num[t]+1;//起点到temp位置的步数为起点到t位置步数加一 if(temp==e){return num[e];//到达终点,返回 }}}
}int main()
{int begin,end,i;while(cin>>begin>>end){for(i=0;i<=10001;i++)//初始化 {flag[i]=0;num[i]=0;}if(begin>=end)//因为回头走只能每次减一,不能跃迁 {cout<<begin-end<<endl;}else{cout<<bfs(begin,end)<<endl;}}
}

Catch That Cow题解BFS方法C++实现相关推荐

  1. POJ3278 HDU2717 Catch That Cow【BFS】

    Catch That Cow Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 100475   Accepted: 31438 ...

  2. POJ 3278 Catch That Cow(BFS)

    题目网址:http://poj.org/problem?id=3278 题目: Catch That Cow Time Limit: 2000MS   Memory Limit: 65536K Tot ...

  3. 【搜索入门专题1】hdu2717 H - Catch That Cow 【BFS】

    Catch That Cow Problem Description Farmer John has been informed of the location of a fugitive cow a ...

  4. Hdoj 2717.Catch That Cow 题解

    Problem Description Farmer John has been informed of the location of a fugitive cow and wants to cat ...

  5. HDU 2717 Catch That Cow(BFS)

    题目链接 好裸,BFS.杭电多组..2A.. 1 #include <stdio.h> 2 #include <string.h> 3 int p[100001],o[1000 ...

  6. C - Catch That Cow(BFS)

    找奶牛 有三种移动方式,作为BFS搜索的方向 利用 当 n > k 时只能向后走,优化结果 #include<iostream> #include<cstring> #i ...

  7. poj 3278 Catch That Cow (bfs)

    题目:http://poj.org/problem?id=3278 题意: 给定两个整数n和k 通过 n+1或n-1 或n*2 这3种操作,使得n==k 输出最少的操作次数 1 #include< ...

  8. HDU2717 Catch That Cow(bfs)

    题意:农夫的牛跑了,给出农夫和牛在坐标轴上的位置n和k,农夫每次只能从点n移动到n-1.n+1或者n*2的位置.输出抓到牛所需要的最小移动次数. 思路:思路明显的bfs,每次搜索只按照这三种方式,标记 ...

  9. c语言编辑87152,POJ 3287 (基础BFS) Catch That Cow

    这是做的第一道BFS,很基础很简单的题目 广度优先搜索算法如下:(用QUEUE) (1) 把初始节点S0放入Open表中: (2) 如果Open表为空,则问题无解,失败 退出: (3) 把Open表的 ...

最新文章

  1. Android移动开发之【Android实战项目】剑走偏锋-得会导入别人的Android Studio项目!
  2. 宏的使用 extern
  3. 浮点数的运算为什么更慢
  4. 【面向对象】类的特殊成员方法
  5. Python基础day09【面向对象(封装、继承、多态)、重写、私有权限】
  6. 爬格子呀9.17(图论)
  7. always中的敏感变量
  8. Android上传图片的两种方式
  9. python cursor函数_执行从python返回cursor的db2plsql函数
  10. # 检测中英输入法_奇怪的知识点增加了 手机输入法还能做更多
  11. ApiDoc 一键生成注释
  12. 匆匆的一瞥,错过了一份正确的BIOS……,安装X64系统时错刷BIOS的彻底死机过程以及解决方法...
  13. java笔记框架部分
  14. 自己写得一个分布式海量文件搜索引擎
  15. 百度网盘不能下载文件,如何用迅雷下载(链接为网盘链接)
  16. 网站重要的推广方式——博客推广(上:什么是博客推广)
  17. mixpanel实验教程(1) 支持
  18. css动画效果制作正方体旋转相册
  19. Android肝帝战纪之基于上篇单Activity+多Fragment框架,开发电商式导航栏,多Fragment切换
  20. csrf漏洞防御方案_CSRF原理实战及防御手段

热门文章

  1. 差速锁与限滑差速器的区别
  2. Pyth笔记-高级装饰器
  3. Excel搭建RFM模型
  4. OrangePI使用 Rust-python 完整教程
  5. deebot扫地机器人响四声_科沃斯扫地机器人故障声叫4声什么故障_科沃斯扫地机器人故障...
  6. 蚂蚁算法的应用(01背包、函数极值、TSP)
  7. 我以为我很菜,虽然我确实很菜,但现在我菜的理直气壮~
  8. oracle order by 汉字,Oracle Order by 按汉字拼音排序
  9. python爬历年大学生就业数据_2018 年大学生就业形势数据分析报告.PDF
  10. 身份认证——session认证机制与JWT认证机制(入门到使用)