(BFS)Catch That Cow(poj3278)

题目:

农夫知道一头牛的位置,想要抓住它。农夫和牛都于数轴上 ,农夫起始位于点 N(0<=N<=100000) ,牛位于点 K(0<=K<=100000) 。农夫有两种移动方式: 1、从 X移动到 X-1或X+1 ,每次移动花费一分钟 2、从 X移动到 2*X ,每次移动花费一分钟 假设牛没有意识到农夫的行动,站在原地不。最少要花多少时间才能抓住牛?
Input
一行: 以空格分隔的两个字母: N 和 K
Output
一行: 农夫抓住牛需要的最少时间,单位分钟
Sample Input
5 17
Sample Output
4
Hint
农夫使用最短时间抓住牛的方案如下: 5-10-9-18-17, 需要4分钟.

分析与解答

由于无法确定深度,因此用bfs广搜,bfs不需要回溯,是一层一层推进,一直到最后的解


这题有三种情况,后退一步,前进一步,前进二倍当前距离,那我们就层次遍历,每层输入到队列里,输完了就把上一层pop掉,就是不断遍历并且查找,遇到最终结果return并输出time即可
为了减小时间,我们需要判重,每次只入那些曾经没出现过的数。
这一类bfs具体怎么实现,就是先建一个队列,然后把第一个数push里面,只要队列不空,就一直对队列进行出队入队操作。需要有两个变量 m,next;m存的是根结点,每次循环最初需要把他取出,next存的是由根结点+1-1*2从而形成的子结点,我们存子结点时注意判重,不重复我们就push next,并且标记。注意每次操作完之后我们都要检查一下是不是满足最终的结果,如果满足我们直接return就行

代码参考:https://blog.csdn.net/qq_38620461/article/details/78445374

#include<bits/stdc++.h>
using namespace std;
int to[2]={1,-1};
int a,b,sum;
int vis[100000];
struct place
{int x,time;
};
int check(place k)
{if(k.x<0||k.x>100000||vis[k.x]==1)return 0;return 1;
}
int bfs(place n)
{place m,next;queue<place>w;w.push(n);while(!w.empty()) {m=w.front();w.pop();if(m.x==b)return m.time;for(int i=0;i<2;i++){next.x=m.x+to[i];next.time=m.time+1;if(next.x==b)return next.time;if(check(next)){w.push(next);vis[next.x]=1;}}next.x=m.x*2;next.time=m.time+1;if(next.x==b)return next.time;if(check(next)){w.push(next);vis[next.x]=1;}}return 0;
}
int main()
{int i,j,t;place x1;while(~scanf("%d %d",&a,&b)){memset(vis,0,sizeof(vis));x1.x=a;x1.time=0;vis[x1.x]=1;sum=0;sum=bfs(x1);printf("%d\n",sum);}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/560744.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java jmx 监控_只用五分钟为系统实现基于JMX的监控

早期是作为J2EE的一部分, 因此总给人一种开发起来会很"重"的感觉, 这让不少Java程序员宁愿选择自行实现"轻量级"方案. 时至今日, 借助一些优秀的开源项目, JMX 也可以用起来很"轻".pojo-mbean 使用Annotation对MBean进行声明, 省去不少 JMX规范中…

wsld2java axis_Weblogic+axis2安装

Weblogicaxis2安装实验环境系统版本使用到软件软件版本Redhat 6.3Ld-linux.so.2Ld-linux.so.2 安装的weblogic的需要安装(系统自带)Weblogic10.3Axis21.41在以下实验中我使用的是1.41的war包 &#xff0c;下载war包的话可以在weblogic中进行部署。实验步骤&#xff1a;启动webl…

java流读写_java流概述以及文件读写示例

1. 先分清楚是字节流还是字符流。字节流&#xff1a;InputStream OutputStream字符流&#xff1a;Reader Writer字符流与字节流的区别是读取的单位长度不同&#xff0c;字节流读8字节&#xff0c;字符流读16字节&#xff0c;所以有中文时&#xff0c;就得用字符流。2. 在字节/字…

python自动化操作应用程序错误_web自动化中踩过的低级错误坑(python+selenium)

1.定位了元素没有做下一步操作&#xff0c;比如&#xff0c;点击、输入等功能&#xff0c;而报错&#xff0c;报错信息如下&#xff1a;2.上传图片时&#xff0c;定位元素&#xff0c;应该定位input标签&#xff0c;点击页面input标签肉眼没有看到定位到任何元素&#xff0c;以…

qgis折点打断_arcgis在折点处打断并建立网络分析(最短路径等问题)

目的&#xff1a;GIS网络分析用于对段路径等问题。这里仅仅讲述如何建立网络分析。网络建立前必须满足以下条件1.要素文件在节点处打断(本文下面会叙述)2.要素文件在地理数据库里的数据集里(一般是这样)3.要素文件包含的数据集里已经验证拓扑&#xff0c;并确保没有错误(可选)注…

base64 java php_利用PHP将图片转换成base64编码的实现方法

先来说一下为什么我们要对图片base64编码base64是当前网络上最为常见的传输8Bit字节代码的编码方式其中之一。base64主要不是加密&#xff0c;它主要的用途是把某些二进制数转成普通字符用于网络传输。由于这些二进制字符在传输协议中属于控制字符&#xff0c;不能直接传送&…

(BFS)Knight Moves(hdu1372)

题目&#xff1a; 在象棋王国&#xff0c;尼古拉斯.火山是一匹英俊的马&#xff0c;他非常幸运迎娶了白马王国的公主&#xff0c;他们将度蜜月&#xff0c;你现在是他们的女仆&#xff0c;火山会问你去一些地方最少需要多少步&#xff0c;这么简单的事当然难不倒你。由于火山是…

java上机作业要注意什么_Java第八次上机作业

1、请按照以下要求设计一个学生类Student&#xff0c;并进行测试。要求如下&#xff1a;1)Student类中包含姓名、成绩两个属性2)分别给这两个属性定义两个方法&#xff0c;一个方法用于设置值&#xff0c;另一个方法用于获取值.3)Student类中定义一个无参的构造方法和一个接收两…

java windows 2008_Windows server 2008 R2 安装Java环境

一、配置环境操作系统软件包Windows server 2008 R2jdk_1.7.rar二、安装操作1.右击解压jdk_1.7.rar&#xff1b;解压后双击运行jdk-7u79-windows-i586 .exe2.点击【下一步】一直到有个【更改】按钮&#xff0c;可以更改安装路径&#xff0c;设置完成后点击“下一步”。到达这个…

java 匿名类型_Java之匿名类讲解

匿名类&#xff0c;正如名字一样在java中没有名字标识的类&#xff0c;当然了编译后还是会安排一个名字的。下面是一个关于匿名类的简单例子&#xff1a;public classClient {public static voidmain(String[] args) throws InterruptedException {Thread tnew Thread(newRunna…

(并查集)小希的迷宫

题目&#xff1a; 上次Gardon的迷宫城堡小希玩了很久&#xff08;见Problem B&#xff09;&#xff0c;现在她也想设计一个迷宫让Gardon来走。但是她设计迷宫的思路不一样&#xff0c;首先她认为所有的通道都应该是双向连通的&#xff0c;就是说如果有一个通道连通了房间A和B&…

(并查集)食物链

题目&#xff1a; 动物王国中有三类动物A,B,C&#xff0c;这三类动物的食物链构成了有趣的环形。A吃B&#xff0c; B吃C&#xff0c;C吃A。 现有N个动物&#xff0c;以1&#xff0d;N编号。每个动物都是A,B,C中的一种&#xff0c;但是我们并不知道它到底是哪一种。 有人用两…

多线程销售问题java_Java多线程Runable售票系统实现过程解析

一、无等待&#xff0c;直接出票【虽然解决了不会冲票问题&#xff0c;但显然不符合实际生活】&#xff1a;package com.thread.sale;public class Sale {public static void main(String[] args) {//悟&#xff0c;那么设计爬虫的时候&#xff0c;下载的资源唯一&#xff0c;使…

带权并查集-Building Block

题目&#xff1a; John are playing with blocks. There are N blocks (1 < N < 30000) numbered 1…N。Initially, there are N piles, and each pile contains one block. Then John do some operations P times (1 < P < 1000000). There are two kinds of ope…

(模拟+floyd)Saving James Bond

题目&#xff1a; This time let us consider the situation in the movie “Live and Let Die” in which James Bond, the world’s most famous spy, was captured by a group of drug dealers. He was sent to a small piece of land at the center of a lake filled with…

(dijkstra算法+多权值)最短路径问题

给你n个点&#xff0c;m条无向边&#xff0c;每条边都有长度d和花费p&#xff0c;给你起点s终点t&#xff0c;要求输出起点到终点的最短距离及其花费&#xff0c;如果最短距离有多条路线&#xff0c;则输出花费最少的。 Input 输入n,m&#xff0c;点的编号是1~n,然后是m行&am…

php 取经纬度,php根据地址获取百度地图经纬度的实例方法

首先我们来看全部实例代码&#xff1a;/*** param string $address 地址* param string $city 城市名* return array*/function getLatLng($address‘‘,$city‘‘){$result array();$ak ‘‘;//您的百度地图ak&#xff0c;可以去百度开发者中心去免费申请$url "http://…

php 留言板分页显示,php有分页的留言板,留言成功后怎么返回当前页?

比如我在【index.php?p3】发布留言&#xff0c;成功后怎么返回到 index.php?p3 这个页面&#xff1f;在【index.php?p5】发布留言成功后怎么返回index.php?p5这个页面&#xff1f;location.href"这里该怎么写&#xff1f;"涉及的页面有index.php&#xff0c;doac…

php class使用方法,PHP调试类Krumo使用教程

写程序最讨厌的是程序发生错误&#xff0c;但是却又不知道该从何debug起&#xff0c;我们通常会使用print_r 或者 var_dump 或者是 echo 慢慢的debug。如果你跟我一样使用PHP 5开发&#xff0c;现在可以使用Krumo这个简单好用的工具帮助我们做这件事情。虽然IDE也有内建的debug…

matlab 连接数组,matlab数组操作知识点总结

其实如果单从建模来讲&#xff0c;以下大部分函数都用不到&#xff0c;但是这些都是基础。第一点&#xff1a;数组与矩阵概念的区分数组&#xff1a;与其它编程语言一样&#xff0c;定义是&#xff1a;相同数据类型元素的集合。矩阵&#xff1a;在数学中&#xff0c;矩阵(Matri…