`

2013程序设计实现之广搜作业 A

阅读更多

/**

***= =,好吧我来翻译一下,就是有2个数A,B。A可以+1,-1,*2来改变自己的值,上面三种情况都算作操作+1。求A=B所用的最少的操作数。。。。。(0<A,B<100000).
----此题来自百练poj
A:Catch That Cow
查看 提交 统计 提问
总时间限制: 2000ms 内存限制: 65536kB
描述
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 X - 1 or X + 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?

输入
Line 1: Two space-separated integers: N and K
输出
Line 1: The least amount of time, in minutes, it takes for Farmer John to catch the fugitive cow.

*/
#include<iostream>
#include<queue>
#include<string.h>//memset()

using namespace std;


int getMinStepsByBFS(int n,int k){
     int xSteps[100001];
     memset(xSteps,0,sizeof(xSteps));//这里将所有的该范围内的数都包含,内容为0即未操作过,否则在原来的基础上+1
     queue<int> points;//此队列是用来存要进行操作的点
     points.push(n);
     while(!points.empty()){
                 int x = points.front();
                 if(x == k){
                      return xSteps[k];//广度搜索搜一次就能搜到最优解,因为他是在所有操作数相同的情况下最先搜到的
                      }else{
                            points.pop();
                            for(int i = 0;i < 3;i++){
                                    switch(i){
                                              case 0 :
                                                   if(x-1>= 0 && !xSteps[x-1] && x-1!=n){
                                                                  xSteps[x-1] = xSteps[x]+1;
                                                                  points.push(x-1);
                                                                  }
                                                   break;
                                              case 1 :
                                                   if(x-1 <= 100000 && !xSteps[x+1] && x+1!=n){
                                                                  xSteps[x+1] = xSteps[x]+1;
                                                                  points.push(x+1);
                                                                  }
                                                   break;
                                              case 2 :
                                                   if(2*x <= 100000 && !xSteps[2*x] && 2*x!=n){
                                                                  xSteps[2*x] = xSteps[x]+1;
                                                                  points.push(2*x);
                                                                  }
                                                   break;
                                              default :
                                                      cout<<"error"<<endl;
                                              }
                                    }
                            }
                 }
     }
   
int main(){
    int n,k;
    cin>>n>>k;
    if(n>=0 && n<=100000 && k>=0 && k<= 100000){
        cout<<getMinStepsByBFS(n,k)<<endl;
    }
    system("pause");
    return 0;
        }

0
3
分享到:
评论

相关推荐

    C++程序设计大作业-飞机订票系统的设计与实现源码+程序设计文档

    C++程序设计大作业-飞机订票系统的设计与实现源码+程序设计文档C++程序设计大作业-飞机订票系统的设计与实现源码+程序设计文档C++程序设计大作业-飞机订票系统的设计与实现源码+程序设计文档C++程序设计大作业-飞机...

    C++程序设计大作业可视化小程序扫雷的实现源码.zip

    C++程序设计大作业可视化小程序“扫雷”的实现源码C++程序设计大作业可视化小程序“扫雷”的实现源码C++程序设计大作业可视化小程序“扫雷”的实现源码C++程序设计大作业可视化小程序“扫雷”的实现源码C++程序设计...

    程序设计大作业基于Qt实现的联网对战不围棋源码.zip

    程序设计大作业基于Qt实现的联网对战不围棋源码.zip程序设计大作业基于Qt实现的联网对战不围棋源码.zip程序设计大作业基于Qt实现的联网对战不围棋源码.zip程序设计大作业基于Qt实现的联网对战不围棋源码.zip程序设计...

    c语言程序设计作业,基于原神和碧蓝航线实现的抽卡模拟器.zip

    c语言程序设计作业,基于原神和碧蓝航线实现的抽卡模拟器.zipc语言程序设计作业,基于原神和碧蓝航线实现的抽卡模拟器.zipc语言程序设计作业,基于原神和碧蓝航线实现的抽卡模拟器.zipc语言程序设计作业,基于原神和...

    浙大 2013 Web程序设计 离线作业.doc

    浙大 2013 Web程序设计 离线作业

    【微信小程序源码-毕业设计期末大作业】外卖:实现类似锚点功能.zip

    微信小程序源码-毕业设计期末大作业课程设计源码 微信小程序源码-毕业设计期末大作业课程设计源码 微信小程序源码-毕业设计期末大作业课程设计源码 微信小程序源码-毕业设计期末大作业课程设计源码 微信小程序源码-...

    东北大学-NEU-高级Java程序设计-Java作业.rar

    东北大学-NEU-高级Java程序设计-Java作业,这个是高级Java程序设计的作业, 1.自定义高度打印三角形 2.自定义异常,捕获并打印三角形 3.实现一个简单的画板并写入到文件中,实现多态,能够从文件中读取写入的对象。...

    软件设计模式大作业

    软件设计模式大作业 本资源为一份完整的软件设计模式大作业,涵盖了六...本资源为一份完整的软件设计模式大作业,涵盖了六种设计模式的应用,展示了蛋糕订购系统的设计和实现过程,提供了一个完整的软件设计模式示例。

    基于C++设计实现的歌词轮播系统源码+详细注释+exe可执行程序(课程作业).zip

    1.项目代码功能经验证ok,确保稳定可靠运行。欢迎下载使用!在使用过程中,如有问题或建议,请及时私信沟通,帮助解答。...基于C++设计实现的歌词轮播系统源码+详细注释+exe可执行程序(课程作业).zip

    谭浩强C语言程序设计第五版详细答案

    《谭浩强C语言程序设计第五版》是学习C语言的经典教材,旨在帮助初学者掌握C语言编程的基础知识。本书不仅适用于大一学生,也适合自学者。在本章中,我们将深入探讨C语言程序设计的基本概念和核心知识点。 1.1 程序...

    张玉生《C语言程序设计》双色版 C语言程序设计理论教材习题参考答案.pdf

    张玉生编写的《C语言程序设计》双色版是一本针对初学者的C语言理论教材,它包括了C语言的基础知识、语法结构、数据类型、控制结构、函数、指针、数组、字符串等核心技术内容。该教材不仅适合自学,同时也适合作为...

    操作系统 编写并调试一个单道处理系统的作业调度模拟程序

    根据给定的信息,本文将详细解释如何在单道处理系统中实现作业调度模拟程序,并针对先来先服务(First-Come First-Served, FCFS)、最短作业优先(Shortest Job First, SJF)、响应比高者优先(Highest Response ...

    C++程序设计(谭浩强)PDF扫描版第3卷(共3卷)

    C++程序设计 扫描版,谭浩强编著,清华大学出版社,2004年6月第一版。 注意:其他两卷在本网页下面我的其它资源里可以找到 内容简介 C++是近年来国内外广泛使用的现代计算机语言,它既支持面向过程的程序设计,也...

    钱能- c++程序设计教程习题答案

    总的来说,《钱能-C++程序设计教程习题答案》是学习C++的重要辅助资料,它可以帮助你巩固理论知识,提升编程技能,为你的编程之路打下坚实基础。无论你是自学还是在课堂上学习,都应该充分利用这样的资源,将理论与...

    Windows程序设计_第5版珍藏版.pdf

    ### Windows程序设计_第5版珍藏版.pdf #### 知识点概览: 1. **书籍概述**:《Windows程序设计(第5版 珍藏版)》是一部经典的Windows编程指南,自出版以来已经帮助近50万名Windows程序员入门并成长为技术专家。 2...

    WPF程序设计指南(最全-清晰PDF中文版-附源码)part1

    WPF程序设计指南(最全-清晰PDF中文版-附源码) (文件太大,分成三个部分) 跟随Windows大师Charles Petzold学习新一代Windows客户端接口程序设计  Windows Presentation Foundation(WPF)是微软.NET Fmmework 3.0...

    嵌入式系统的微模块化程序设计-实用状态图C/C++实现

    有关状态机设计方面的书籍,我这里隆重推荐一本:《Practical Statecharts in C/C++ Quantum Programming for Embedded Systems》,中文名叫做《嵌入式系统的微模块化程序设计-实用状态图C/C++实现》,北航出版的,...

    GDI+图形程序设计.zip

    这本书《GDI+程序设计》显然是一个深入探讨GDI+技术的教程,它可能包含了GDI+的基础概念、核心组件、实例解析和实践代码。通过阅读这本书,开发者可以了解到如何利用GDI+来构建图形用户界面,进行图像处理,以及创建...

    POSIX多线程程序设计.pdf

    《POSIX多线程程序设计》深入描述了IEEE的开放系统接口标准——POSIX线程,通常称为Pthreads标准。本书首先解释了线程的基本概念,包括异步编程、线程的生命周期和同步机制;然后讨论了一些高级话题,包括属性对象、...

    基于微信小程序点餐系统的设计与实现(含word论文)

    《基于微信小程序点餐系统的设计与实现》 随着信息技术的快速发展,互联网已深入人们生活的各个领域,其中,餐饮行业的数字化转型尤为明显。微信小程序作为移动应用的一种轻量化形式,为餐饮业提供了便捷的线上点餐...

Global site tag (gtag.js) - Google Analytics