题意:给你n和k,问你n最少花费多少代价能得到k;

有两种变换:1、n++或者n--;

      2、n=n*2;

两种代价每次的花费都是1;

思路:一维的bfs,每次入队三个点,一个是n+1,一个是n-1,一个是n*2的点;

#include<iostream>
#include<algorithm>
#include<cstring>
#include<queue>
#define maxn 100020
using namespace std;
int step[maxn*2];
int visit[maxn*2];
int main()
{queue<int>q;int n,k;while(cin>>n>>k){if(n>k)cout<<n-k<<endl;else if(n==k){cout<<"0\n";}else{memset(visit,0,sizeof(visit));memset(step,0,sizeof(step));visit[n]=1;step[n]=0;int flag=0;while(!q.empty()){q.pop();}q.push(n);while(!q.empty()){int temp=q.front();q.pop();int now;//cout<<"z\n";for(int i=1;i<=3;i++){if(i==1)now=temp+1;else if(i==2)now=temp-1;elsenow=temp*2;if(visit[now]==0&&now<=maxn&&now>=0){q.push(now);step[now]=step[temp]+1;visit[now]=1;}if(now==k){cout<<step[now]<<endl;flag=1;break;}}if(flag==1)break;}}}return 0;
}

转载于:https://www.cnblogs.com/huangdao/p/8541396.html

hdu-2717(基础搜索bfs)相关推荐

  1. 【八数码问题】基于状态空间法的知识表示与状态搜索:无信息搜索(BFS/DFS) 启发式搜索(A*)

    前言 一.问题引入 二.状态空间法 1. 知识及其表示 2. 状态空间法定义 3. 问题求解 三.基于状态空间搜索法解决八数码问题 1. 八数码问题的知识表示 2. 状态空间图搜索 1. 无信息搜索 ...

  2. 广度优先搜索BFS进阶(一):多源BFS、优先队列BFS、双端队列BFS

    一.多源BFS 在上一篇博客:广度优先搜索BFS基础中,我们接触到的BFS均是单起点(单源)的,但是对于某一些问题,其有多个起点,此类问题我们称为多源BFS问题.先思考下面一道例题: 1.腐烂的橘子 ...

  3. POJ 3278 / hdu 2717 Catch That Cow (广搜)

    POJ 3278 HDU 2717 广搜题,用一个数组标记就可以过,不标记的话会超内存. 另外,poj的数据要比hdu强一些,比如0 100,这种数据.不特判的话会RE.不过如果不特判,在poj上用C ...

  4. 广度优先搜索 BFS算法

    广度优先搜索算法(Breadth-First-Search,BFS),又称作宽度优先搜索.BFS算法是从根节点开始,沿着树的宽度遍历树的节点.如果所有节点均被访问,则算法中止. 算法思想 1.首先将根 ...

  5. 一文搞定深度优先搜索(DFS)与广度优先搜索(BFS)【含完整源码】

    写在前面:博主是一位普普通通的19届双非软工在读生,平时最大的爱好就是听听歌,逛逛B站.博主很喜欢的一句话花开堪折直须折,莫待无花空折枝:博主的理解是头一次为人,就应该做自己想做的事,做自己不后悔的事 ...

  6. 广度优先搜索(BFS)——抓住那头牛(POJ 4001)

    本文将以(POJ 4001)抓住那头牛 为例,讲解经典算法广度优先搜索(BFS)的STL写法 在实际写算法中,怎么能不使用更快.更方便.更准确.更高效的C++ STL模板呢 相信很多人都了解过广度优先 ...

  7. 【算法】深度搜索(DFS) 和 广度搜索(BFS)

    深度搜索(DFS) 点:然后退回到该顶点,搜索其它路径,直到以该顶点为始点的所有路径的顶点都被访问,深度搜索算法是递归算法,因为对于没一个节点来说,执行的是同样的操作.  简单来说,深度搜素算法就是一 ...

  8. 广度/宽度优先搜索(BFS)详解

    1.前言 广度优先搜索(也称宽度优先搜索,缩写BFS,以下采用广度来描述)是连通图的一种遍历策略.因为它的思想是从一个顶点V0开始,辐射状地优先遍历其周围较广的区域,故得名. 一般可以用它做什么呢?一 ...

  9. 人工智能课后作业_python实现广度优先遍历搜索(BFS)(附源码)

    2 广度优先遍历搜索(BFS) 2.1算法介绍 2.2实验代码 2.3实验结果 2.4实验总结 2.1算法介绍 广度优先搜索算法(英语:Breadth-First-Search,缩写为BFS),是一种 ...

最新文章

  1. 智能化时代的到来,智能机器人会抢走我们的工作和收入吗?
  2. 依图又斩获10冠!AI芯片拿下创新技术大奖,朱珑再谈智能密度
  3. 高并发编程-自定义带有超时功能的锁
  4. python编程单片机_Micro Python:用Python语言控制单片机
  5. C语言指针与强制类型转换
  6. dev多行注释_Python代码注释的用法和意义
  7. python绘图数字_绘制一个绘图,其中Yaxis文本数据(非数字)和Xaxis数字d
  8. gulp教程之gulp-autoprefixer
  9. 一个通用的Makefile模板-转
  10. Oracle JOB的建立,定时执行任务
  11. pycharm git使用_通过Pycharm中的版本控制工具VCS使用Git
  12. Java-模拟KTV点歌(控制台程序)
  13. 小程序源码:收款码三合一制作-多玩法安装简单
  14. 【大兴区亦庄亦庄线东晶国际4居室】自如网
  15. Revit土建软件的功能,【顶部对齐】【墙齐梁板】【快速切换材质】等等
  16. 百度js推送没法用了?帝国CMS结合百度API推送方法来了
  17. linux最上层目录是什么,Linux基础知识之--目录组成结构,当前目录及上层目录表示方法,目录访问权限...
  18. 微软语音识别引擎Speech
  19. 关于Excel中的自定义格式
  20. 机器学习实战——数据探索之数据泄露(Data Leakage)

热门文章

  1. mybatis11--多对多关联查询
  2. GridView 的EmptyDataText 及 EmptyDataTemplate
  3. DataReader类访问字段的值
  4. 红外倒车雷达原理图_斯坦福研究登Nature子刊:芯片实现激光雷达技术,价格低至数百美元...
  5. python win10 arm_windows10 arm版下载-windows10arm镜像64位中文版 - 极光下载站
  6. oracle sysdate 截取年月日,oracle中extract()函数----用于截取年、月、日、时、分、秒...
  7. java线程基础_Java多线程基础
  8. 如何用C语言编辑窗口界面,「分享」C语言如何编写图形界面
  9. pdo mysql连接类_PHP PDO-MYSQL:如何在不同类之间使用数据库连接
  10. php验证邮箱的通用函数,PHP函数:PHP的通用检测函数总结