Catch That Cow
2015-09-26 09:36
411 查看
Catch That Cow
Time Limit:2000MS Memory Limit:65536K
Total Submit:118 Accepted:30
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
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.
问题描述:Farmer John要抓获逃亡的牛,他的开始位置N和牛的位置K是在同一条线上(0 ≤ N,K ≤ 100,000),Farmer John的追赶走有两种方式:步行和转送。
Walking:FJ每分钟移动的距离是X-1 or X+1 。
Teleporting: FJ每分钟移动的距离是2X 。
假设牛没有意识到追赶,原地不动,多久FJ能追赶上它?
输入: FJ和牛各自的位置
输出:抓到牛用的最短时间
Sample Input
5 17
Sample Output
4
Hint
FJ抓到牛用的最短时间路径: 5-10-9-18-17, 用时四分钟。
代码:
Time Limit:2000MS Memory Limit:65536K
Total Submit:118 Accepted:30
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
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.
问题描述:Farmer John要抓获逃亡的牛,他的开始位置N和牛的位置K是在同一条线上(0 ≤ N,K ≤ 100,000),Farmer John的追赶走有两种方式:步行和转送。
Walking:FJ每分钟移动的距离是X-1 or X+1 。
Teleporting: FJ每分钟移动的距离是2X 。
假设牛没有意识到追赶,原地不动,多久FJ能追赶上它?
输入: FJ和牛各自的位置
输出:抓到牛用的最短时间
Sample Input
5 17
Sample Output
4
Hint
FJ抓到牛用的最短时间路径: 5-10-9-18-17, 用时四分钟。
代码:
#include "stdafx.h" #include<iostream> #include<queue> using namespace std; #define M 100001 #define INF 10000000 // 定义一个结构体,pos表示位置,step表示所耗的分钟数。 struct POINT { int pos; int step; }now,m_next; queue<POINT>Q; bool visited[M]; int n,k; // 计算追赶牛用的最短时间 int bfs() { // 栈清零 while(!Q.empty()) Q.pop(); // FJ所在的位置 now.pos=n; now.step=0; visited[now.pos]=true; Q.push(now); while(!Q.empty()) { now=Q.front(); Q.pop(); m_next=now; // 让程序更加有趣味一点 cout << "正在疯狂的抓牛!!" << endl; for(int i=0;i<3;i++) { if(i==0) { cout << "前进一步!" << endl; m_next.pos=now.pos+1; } if(i==1) { cout << "后退一步!" << endl; m_next.pos=now.pos-1; } if(i==2) { cout << "前进两倍距离!" << endl; m_next.pos=now.pos*2; } m_next.step=now.step+1; if(m_next.pos==k) return m_next.step; if(m_next.pos<0||m_next.pos>M) continue; if(!visited[m_next.pos]) { visited[m_next.pos]=true; Q.push(m_next); } } } return INF; } int main() { while(cin>>n>>k) { memset(visited,false,sizeof(visited)); if(n<k) cout<<bfs()<<endl; if(n==k) cout<<0<<endl; if(n>k) cout<<n-k<<endl; } }
相关文章推荐
- Lua教程(七):数据结构详解
- 解析从源码分析常见的基于Array的数据结构动态扩容机制的详解
- C#数据结构揭秘一
- 数据结构之Treap详解
- JavaScript数据结构和算法之图和图算法
- Java数据结构及算法实例:冒泡排序 Bubble Sort
- Java数据结构及算法实例:插入排序 Insertion Sort
- Java数据结构及算法实例:考拉兹猜想 Collatz Conjecture
- java数据结构之java实现栈
- java数据结构之实现双向链表的示例
- Java数据结构及算法实例:选择排序 Selection Sort
- Java数据结构及算法实例:朴素字符匹配 Brute Force
- Java数据结构及算法实例:汉诺塔问题 Hanoi
- Java数据结构及算法实例:快速计算二进制数中1的个数(Fast Bit Counting)
- java数据结构和算法学习之汉诺塔示例
- Java数据结构及算法实例:三角数字
- Java数据结构之简单链表的定义与实现方法示例
- 数据结构之AVL树详解
- qqwry.dat的数据结构图文解释第1/2页
- JavaScript中数据结构与算法(五):经典KMP算法