HDU 2717 Catch That Cow(BFS)
Catch That Cow
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?
今天开始,俺终于也走上博客之路了。虽然我现在是个小白 ,但我相信 我可以在acm路上越走越好。
话说这题好坑,最后就差一个maxn没改,竟然给我wrong answer。 我竟看了一个多小时,哎 。
本题为bfs,多做做bfs的题就会发现,他们都很类似,但本题需要注意,之后的next状态都是根据previous来的。
AC代码:
#include <bits/stdc++.h>
using namespace std; #define cle(a,b) memset(a,b,sizeof(a))
#define rep(i,b) for(unsigned i=0;i<(b);i++)
int n,k;
const int MAXN=1e6;//这里是6 不是5 就是这个 坑了我好长时间</p>
bool vis[MAXN+10]; struct node
{
int x,step;
};
bool che(int x)
{
if(x<0||x>=MAXN||vis[x])
return 0;
return 1;
}
int bfs(int x)
{
queue<node> que;
node previous,next;
previous.x=x;
previous.step=0;
vis[previous.x]=1;
que.push(previous);//之后一定要push第一个状态啊 不push怎么会有呢?
while(que.size())
{
previous=que.front();/*previous在外面用 用于第一个状态加入队列 并且在while里面也用 即previous赋值了2次*/
que.pop();
if (previous.x==k)/*判断结束的条件也是previous的 previous 1次赋初值 1次赋 que.front() 1次判断 1次被next赋值 共用了4次*/
return previous.step;//最重要的 判断结束条件 return答案
next = previous;/*next只能够被previous 赋值 并且之后判断next是否能加入队列 */
next.x=previous.x+1; if (che(next.x))//之后的便是判断语句 找符合的状态插入队列
{
next.step=previous.step+1;
vis[next.x]=1;
que.push(next);
}
next.x=previous.x-1;
if (che(next.x))//if 判断里有 1:答案的步数 应该++ 2:标记vis数组为走过 3:push进队列
{
next.step=previous.step+1;
vis[next.x]=1;
que.push(next);
}
next.x=previous.x*2;
if (che(next.x))
{
next.step=previous.step+1;
vis[next.x]=1;
que.push(next);
}
}
return -1;
}
int main()
{
while(~scanf("%d%d",&n,&k))
{
cle(vis,0);
int ans=bfs(n);
printf("%d\n",ans);
}
return 0;
}
HDU 2717 Catch That Cow(BFS)的更多相关文章
- HDU 2717 Catch That Cow (bfs)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2717 Catch That Cow Time Limit: 5000/2000 MS (Java/Ot ...
- 题解报告:hdu 2717 Catch That Cow(bfs)
Problem Description Farmer John has been informed of the location of a fugitive cow and wants to cat ...
- HDU 2717 Catch That Cow(常规bfs)
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=2717 Catch That Cow Time Limit: 5000/2000 MS (Java/Oth ...
- hdu 2717:Catch That Cow(bfs广搜,经典题,一维数组搜索)
Catch That Cow Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- hdu 2717 Catch That Cow(BFS,剪枝)
题目 #include<stdio.h> #include<string.h> #include<queue> #include<algorithm> ...
- poj 3278(hdu 2717) Catch That Cow(bfs)
Catch That Cow Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- POJ 3278 Catch That Cow(bfs)
传送门 Catch That Cow Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 80273 Accepted: 25 ...
- Catch That Cow(BFS)
Catch That Cow Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- POJ3279 Catch That Cow(BFS)
本文来源于:http://blog.csdn.net/svitter 意甲冠军:给你一个数字n, 一个数字k.分别代表主人的位置和奶牛的位置,主任能够移动的方案有x+1, x-1, 2*x.求主人找到 ...
随机推荐
- mave之:java的web项目必须要的三个jar的pom形式
jsp-api javax.servlet-api jstl <!-- jsp --> <dependency> <groupId>javax.servlet< ...
- Linux磁盘空间被未知资源耗尽【转】
Linux磁盘空间被未知资源耗尽 在linux中,当我们使用rm在linux上删除了大文件,但是如果有进程打开了这个大文件,却没有关闭这个文件的句柄,那么linux内核还是不会释放这个文件的磁盘空间, ...
- Compiler ,Interpreter, Linker
https://en.wikipedia.org/wiki/Interpreter_(computing) https://en.wikipedia.org/wiki/Compiler https:/ ...
- tomcat 源码解析
how_tomcat_works https://www.uzh.ch/cmsssl/dam/jcr:00000000-29c9-42ee-0000-000074fab75a/how_tomcat_w ...
- memory CPU cache books
http://www.amazon.com/Consistency-Coherence-Synthesis-Lectures-Architecture/dp/1608455645/ref=pd_sim ...
- 005. asp.net页面常用指令
页面指令 用于通知编译器在编译该页面时做出什么样的处理方式, 欢聚换来讲, 页面指令指定了执行该页面的运行时环境, 当编译器处理应用程序时, 可以通过这些指令来让编译器做特定的处理; 在asp.ne ...
- Web前端开发笔试&面试_05_other 2016104399MS
1.数据传送的方式,get post 的区别是? 2.你要怎么绑定页码(比如给你第三页,)? 3.数据流是如何实现,用for 循环? 4.轮播怎么实现?用原生JS实现. 5.布局,B是固定宽度,A的内 ...
- vs2010编译lua-5.3.2
lua-5.3.2.tar.gz 解开在 D:\lua 1. 启动VS命令行 2. c:\program files\microsoft visual studio 10.0\vc\bin>cd ...
- python数据类型之 set
set是一个无序且不重复的元素集合 class set(object): """ set() -> new empty set object set(iterabl ...
- Spring Data Solr教程(翻译) 开源的搜索服务器
Solr是一个使用开源的搜索服务器,它采用Lucene Core的索引和搜索功能构建,它可以用于几乎所有的编程语言实现可扩展的搜索引擎. Solr的虽然有很多优点,建立开发环境是不是其中之一.此博客条 ...