POJ
来源:互联网 发布:网络剪刀手 win7 编辑:程序博客网 时间:2024/06/06 15:39
Farmer John has been informed of the location of a fugitive cow and wants to catch her immediately. He starts at a pointN (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 orX + 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?
Line 1: Two space-separated integers: N andK
Line 1: The least amount of time, in minutes, it takes for Farmer John to catch the fugitive cow.
5 17
4
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.
一维的bfs,每次有三种走法,x+1,x-1,x*2,bfs跑一遍输出步数就行.
#include <iostream>#include <cstdio>#include <queue>#include <algorithm>#include <cstring>using namespace std;typedef struct zb{ int x, step;}node;int v[999999];void bfs(int x, int k){ node a, b; queue<node>q; a.x = x; a.step = 0; v[a.x] = 1; q.push(a); while(!q.empty()) { a = q.front(); q.pop(); if(a.x == k) { cout<<a.step<<endl; break; } if(a.x + 1 <= k && !v[a.x+1]) { b.x = a.x+1; b.step = a.step + 1; v[b.x] = 1; q.push(b); } if(a.x * 2 <= 200000 && !v[a.x * 2]) { b.x = a.x * 2; b.step = a.step + 1; v[b.x] = 1; q.push(b); } if(a.x - 1 >= 0 && !v[a.x - 1]) { b.x = a.x-1; b.step = a.step + 1; v[b.x] = 1; q.push(b); } }}int main(){ int n, k; cin>>n>>k; memset(v,0,sizeof(v)); bfs(n,k); return 0;}
阅读全文
0 0
- POJ
- poj
- POJ
- POJ
- poj
- poj
- POJ
- POJ
- poj
- POJ
- POJ
- POJ
- POJ
- POJ
- POJ
- POJ
- POJ
- POJ
- 判别是否包含了emojicon表情
- javascript中对parseInt方法的一点理解
- ( 鲁棒性主成分分析)Robust PCA
- 同一个android手机同时安装2个相同app
- java web中实现同一帐号同一时间只能一个地点登陆(类似QQ登录的功能)
- POJ
- Access Log Sampler之Jemeter
- A+B problem(64bit Integer + EOF)
- maven编译项目时出错(2)
- gulp 搭建项目
- Java 数字千位分隔符
- java.util.ConcurrentModificationException at java.util.ArrayList$ArrayListIterator.next(ArrayList.
- Java单例模式能否通过反射改变静态属性对象
- Kotlin学习(一)基础语法