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.求主人找到 ...
随机推荐
- 希赛网 > 问答 > 数据库 > MySQL数据库 > MySQL的管理与维护 > MySql开启远程用户登录GRANTALLPRIVILEGESON*.*TO'root'@'%'I MySql开启远程用户登录GRANTALLPRIVILEGESON*.*TO'root'@'%'I
MySql开启远程用户登录 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'huawei' WITH GRANT OPTION; FL ...
- VGG-19 和 VGG-16 的 prototxt文件
VGG-19 和 VGG-16 的 prototxt文件 VGG-19 和 VGG-16 的 prototxt文件 VGG-16:prototxt 地址:https://gist.github.co ...
- Windows Kernel Security Training Courses
http://www.codemachine.com/courses.html#kerdbg Windows Kernel Internals for Security Researchers Thi ...
- js定义变量需赋予初始值
这是console.log打印出来的日志,就是多了一个undefined 日志: hitTableObjectID:undefinedbfa4be7b-32fc-459a-9092-ecde316b3 ...
- 常规SQL注入脚本
一:union报错注入 猜字段长度:order by 28 先显示位http://127.0.0.1/sql.php?cmd=-1 UNION SELECT 1,2,3,4,5,6,7,8,9 当前数 ...
- SQL 将一列多行数据合并为一行 FOR XML PATH
FOR XML PATH 方法是用于将查询结果集以XML形式展示,这样展示方式的好处不言而喻.现在我要介绍的FOR XML PATH的"另类"用法. 首先,我们先来看看它的正常用法 ...
- 1分钟去除word文档编辑限制密码
http://blog.sina.com.cn/s/blog_4bd446f30101dc4t.html
- linux 通用IO
open(),read(),write(),close()可以应用于管道,FIFO,socket,或者终端等所有文件类型执行IO操作. lseek()并不适用于所有类型的文件.不允许将lseek()应 ...
- GridView中实现点击某行的任意位置就选中该行
来源:http://auv2009.blog.163.com/blog/static/68858712200992731010670/ 在 GridView中增加一列:(该列是选择按钮,让其不显示) ...
- 不透明度(兼容IE8,chrome,firefox)
background-color: rgba(0, 0, 0, 0.2); background-color: black; opacity: 0.2; filter: Alpha(opacity=2 ...