Catch That Cow POJ - 3278
来源:互联网 发布:新闻文章网站源码 编辑:程序博客网 时间:2024/05/16 01:00
Catch That Cow POJ - 3278
题目描述
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.
大致题意
农夫John要抓回一头牛,他们位置都在x轴上,在单位时间John可以前进一步x+1或者后退一步x-1,或者前进x步即2*x,现在分别告诉你John的位置和牛的位置,问需要抓到牛的最少时间。
思路
bfs求最优解
下面是代码
#include <iostream> #include <cstdio>#include <cstdlib>#include <cmath>#include <fstream>#include <algorithm>#include <climits>#include <cstring>#include <string>#include <set>#include <queue>#include <stack>#include <vector>#include <list>#include<sstream>#include<ctime>using namespace std; struct node{ int x,step; //定义结构体node记录坐标x和已用单位时间};int n,k;queue<node> Q; //bfs所用队列int f[200005]; //用一维数组f来记录某坐标点是否已经走过void bfs() { int x,step; while(!Q.empty()) { node tmp=Q.front(); //取队首元素 Q.pop(); //出队列 x=tmp.x; step=tmp.step; if(x==k) //已经到达牛所在的位置,结束bfs,输出结果 { cout<<step; return; } if(x>=1&&!f[x-1]) //边界判断,判断该位置是否已经走过 { node temp; f[x-1]=1; temp.x=x-1; temp.step=step+1; Q.push(temp); } if(x<=k&&!f[x+1]) { node temp; f[x+1]=1; temp.x=x+1; temp.step=step+1; Q.push(temp); } if(x<=k&&!f[x*2]) { node temp; f[x*2]=1; temp.x=2*x; temp.step=step+1; Q.push(temp); } } } int main() { cin>>n>>k; memset(f,0,sizeof(int)); //初始化 f[n]=1; node a; a.x=n; a.step=0; Q.push(a); bfs(); return 0; }
- poj 3278 Catch That Cow
- POJ 3278 Catch That Cow
- poj 3278 catch that cow
- poj 3278 Catch That Cow
- POJ 3278 Catch That Cow
- Poj 3278 Catch That Cow
- POJ 3278 Catch That Cow
- POJ 3278 Catch That Cow
- POJ 3278 Catch That Cow
- poj 3278 Catch That Cow
- POJ 3278 Catch That Cow
- poj 3278 Catch That Cow
- poj 3278 Catch That Cow
- POJ 3278 Catch That Cow
- POJ 3278 - Catch That Cow
- POJ 3278 Catch That Cow
- POJ 3278 Catch That Cow
- POJ-3278-Catch That Cow
- 没看错!用游戏测试人工智能。
- (六)Qt内存管理
- 【Leetcode】235. Lowest Common Ancestor of a Binary Search Tree
- POJ 1961Period(KMP算法)
- HTML5本地存储——IndexedDB(一:基本使用)
- Catch That Cow POJ - 3278
- 部分和问题
- 1023. 组个最小数 (20)
- C++概述(一)
- python爬虫入门(一)
- ios 生成IPA文件
- noip2016练习题(2.区间)
- 机器学习笔记 - 性能度量
- 基础练习 高精度加法