POJ-3278-Catch That Cow
2016-07-26 22:07
316 查看
Catch That Cow
Description
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?
Input
Line 1: Two space-separated integers: N and K
Output
Line 1: The least amount of time, in minutes, it takes for Farmer John to catch the fugitive cow.
Sample Input
Sample Output
Hint
The fastest way for Farmer John to reach the fugitive cow is to move along the following path: 5-10-9-18-17, which takes 4 minutes.
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<queue>
using namespace std;
int n, k;
struct node
{
int data;
int step;
}q, p;
int main()
{
bool vis[100010];
memset(vis, 0, sizeof(vis));
scanf("%d %d", &n, &k);
queue<node>qq;
q.data = n;
q.step = 0;
qq.push(q);
while(!qq.empty())
{
q = qq.front();
qq.pop();
if(q.data==k)
{
printf("%d\n",q.step);
break;
}
p.step = q.step+1;
vis[q.data] = 1;
p.data = q.data+1;
if(p.data<=100000&&p.data>=0&&!vis[p.data])qq.push(p);
p.data = q.data-1;
if(p.data<=100000&&p.data>=0&&!vis[p.data])qq.push(p);
p.data = q.data*2;
if(p.data<=100000&&p.data>=0&&!vis[p.data])qq.push(p);
}
return 0;
}
Time Limit: 2000MS | Memory Limit: 65536K | |
Total Submissions: 74205 | Accepted: 23391 |
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?
Input
Line 1: Two space-separated integers: N and K
Output
Line 1: The least amount of time, in minutes, it takes for Farmer John to catch the fugitive cow.
Sample Input
5 17
Sample Output
4
Hint
The fastest way for Farmer John to reach the fugitive cow is to move along the following path: 5-10-9-18-17, which takes 4 minutes.
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<queue>
using namespace std;
int n, k;
struct node
{
int data;
int step;
}q, p;
int main()
{
bool vis[100010];
memset(vis, 0, sizeof(vis));
scanf("%d %d", &n, &k);
queue<node>qq;
q.data = n;
q.step = 0;
qq.push(q);
while(!qq.empty())
{
q = qq.front();
qq.pop();
if(q.data==k)
{
printf("%d\n",q.step);
break;
}
p.step = q.step+1;
vis[q.data] = 1;
p.data = q.data+1;
if(p.data<=100000&&p.data>=0&&!vis[p.data])qq.push(p);
p.data = q.data-1;
if(p.data<=100000&&p.data>=0&&!vis[p.data])qq.push(p);
p.data = q.data*2;
if(p.data<=100000&&p.data>=0&&!vis[p.data])qq.push(p);
}
return 0;
}
相关文章推荐
- 博客园markdown支持测试
- Linux_Java_Linux(CentOS 6.8)下安装JDK
- Windows平台下的内存泄漏检测
- CentOS7.2下Hadoop2.7.2的集群搭建
- JavaScript replace()方法
- Python 'ascii' codec can't encode character : ordinal not in range 问题解决
- Java-基础知识
- SQLite轻量级数据库--ContentProvider
- echarts 使用心得略述
- 51nod 更难的矩阵取数问题(动态规划)
- java中的Static class
- 响应式RWD和自适应
- php替换字符串函数strtr()和str_repalce()区别
- ionic命令行cmd直接启动android虚拟机
- 剑指offer 67题 【回溯法】机器人的运动范围
- 一篇文章,读懂 Netty 的高性能架构之道
- 静态库和动态库的区别
- Codeforces Round #202 (Div. 1) A. Mafia(二分,思路)
- 鼠标移上去,弹出说明框,移开则消失
- POJ-3176-Cow Bowling