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.求主人找到 ...
随机推荐
- 【转】 iOS 开发之静态库.a和动态库详解 -- 不错
原文网址:http://blog.csdn.net/lxl_815520/article/details/52154331 一, 简单介绍 1.什么是库 库是程序代码的集合,是共享程序代码的一种方式 ...
- java pdf转换jpg
/** * 把PDF所有页转换为JPG, 并返回所有图片的路劲集合 * @param inputFilePath * 图片路径,具体到文件名 * @param outputFilePath * 输出目 ...
- 利用redis写webshell
redis和mongodb我之所见 最近自己在做一些个人的小创作.小项目,其中用到了mongodb和redis,最初可能对这二者没有深入的认识.都是所谓的“非关系型数据库”,有什么区别么? 实际上,在 ...
- x86-64_register_and_function_frame.html
http://www.searchtb.com/2013/03/x86-64_register_and_function_frame.html
- springVS javaee
https://stackoverflow.com/questions/4490682/difference-between-java-ee-and-spring-framework https:// ...
- HTTPS-HSTS协议(强制客户端使用HTTPS与服务器创建连接)
HSTS(HTTP Strict Transport Security)国际互联网工程组织IETE正在推行一种新的Web安全协议 HSTS的作用是强制客户端(如浏览器)使用HTTPS与服务器创建连接. ...
- 锁_rac环境kill锁表会话后出现killed状态(解决)
原创作品,出自 "深蓝的blog" 博客,深蓝的blog:http://blog.csdn.net/huangyanlong/article/details/46876961 ra ...
- C# HttpRequest 中文编码问题
工作中的项目要用到别家的网络短信平台,工作中遇到中文编码的问题,特总结以备忘. GET方法: public string DoWebRequest(string url) { ...
- Java-JDBC连接Oracle 数据库
package com.zse.oracle; import oracle.jdbc.*; import java.sql.*; import javax.swing.text.html.HTMLDo ...
- wikioi 1474 十进制转m进制
/*===================================== 1474 十进制转m进制 题目描述 Description 将十进制数n转换成m进制数 m<=16 n<=1 ...