HDU2717 Catch That Cow
来源:互联网 发布:windows远程协助 编辑:程序博客网 时间:2024/05/19 01:13
Catch That Cow
Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 12690 Accepted Submission(s): 3924
Problem 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.
题意:
给你一个数n,一个数k,问通过n+1或n-1或n*2这三种操作最少能通过几次操作得到k
思路:
广搜这三种操作即可
要注意两个地方:
1,搜过的数字进行标记,不要重复搜索,不然会爆内存
2,特判下初始n==k的情况==
代码:
#include<cstdio>#include<iostream>#include<cstring>#include<queue>using namespace std;int N=1000000;int map[1000010];struct node{ int value; int step;};int main(){ int n; int k; while(scanf("%d%d",&n,&k)!=EOF) { memset(map,0,sizeof(map)); if(n==k) { printf("0\n"); continue; } queue<node>q; node x; x.value=n; x.step=0; q.push(x); while(!q.empty()) { node item; item.value=(q.front().value+1); if(item.value>=0&&item.value<=N&&map[item.value]==0) { map[item.value]=1; item.step=(q.front().step+1); q.push(item); if(item.value==k) break; } item.value=(q.front().value-1); if(item.value>=0&&item.value<=N&&map[item.value]==0) { map[item.value]=1; item.step=(q.front().step+1); q.push(item); if(item.value==k) break; } item.value=(q.front().value*2); if(item.value>=0&&item.value<=N&&map[item.value]==0) { map[item.value]=1; item.step=(q.front().step+1); q.push(item); if(item.value==k) break; } q.pop(); } printf("%d\n",q.back().step); } return 0;}
- 【HDU2717】-Catch that cow
- HDU2717:Catch That Cow
- HDU2717 Catch That Cow
- HDU2717 Catch That Cow
- HDU2717 - Catch That Cow
- HDU2717 Catch That Cow
- HDU2717 Catch That Cow
- HDU2717 Catch That Cow
- hdu2717:Catch That Cow
- HDU2717 Catch That Cow
- hdu2717 Catch That Cow
- hdu2717 Catch That Cow
- hdu2717 Catch That Cow
- HDU2717:Catch That Cow(BFS)
- hdu2717 Catch That Cow(搜索)
- HDU2717 Catch That Cow BFS
- HDU2717:Catch That Cow(BFS)
- hdu2717 catch that cow【BFS】
- C Primer Plus学习 四十七 向函数传递结构信息 (二)
- 第一坑
- OSPF基础
- 关于Android 7.0的新特性
- Java中double和float精度丢失问题及解决方法
- HDU2717 Catch That Cow
- jQuery 基础核心
- logstash+grok+json+elasticsearch解析复杂日志数据(一)
- WEB后台传数据给前台
- JAVA设计模式——装饰者模式
- python collection 留坑
- iOS开发:兼容iOS 10 资料整理笔记
- 时间日期格式转换
- Android Studio 开启支持 VectorDrawable