Catch That Cow
来源:互联网 发布:网络作家如何赚钱 编辑:程序博客网 时间:2024/06/05 20:11
题目描述
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?
输入
Line 1: Two space-separated integers: N and K
输出
Line 1: The least amount of time, in minutes, it takes for Farmer John to catch the fugitive cow.
示例输入
5 17
示例输出
4
提示
题意:有一个农民和一头牛,他们在一个数轴上,牛在k位置保持不动,农户开始时在n位置。设农户当前在M位置,每次移动时有三种选择:1.移动到M-1;2.移动到M+1位置;3.移动到M*2的位置。问最少移动多少次可以移动到牛所在的位置。所以可以用广搜来搜索这三个状态,直到搜索到牛所在的位置。
#include <iostream>#include <cstdio>#include <queue>#include <cstdlib>#include <cstring>using namespace std;int vis[200010],i;struct node{ int step,data;}s,v;int bfs(int x,int k){ queue<struct node>q; s.data=x; s.step=0; q.push(s); while(!q.empty()) { v=q.front(); q.pop(); if(v.data==k) { printf("%d\n",v.step); return 1; } if(v.data>=1&&!vis[v.data-1]) { s.step=v.step+1; s.data=v.data-1; vis[v.data-1]=1; q.push(s); } if(v.data<=k&&!vis[v.data+1]) { s.step=v.step+1; s.data=v.data+1; vis[v.data+1]=1; q.push(s); } if(v.data<=k&&!vis[v.data*2]) { s.step=v.step+1; s.data=v.data*2; vis[v.data*2]=1; q.push(s); } } return -1;}int main(){ int n,k; while(~scanf("%d%d",&n,&k)) { memset(vis,0,sizeof(vis)); vis[n]=1; bfs(n,k); } return 0;}
//此题与最短步数那个题一样最短步数用BFS中的队列分层存取各种状态,这个队列中第一层是走一步的step=1,位置有三个,每一层所有的位置全部进入队列该层只要有到达的点此时的step就是满足条件的步数,步数一步一步依次加一,
0 0
- POJ3278 Catch That Cow
- Catch That Cow
- Catch That Cow
- poj3278 Catch That Cow
- 3278. Catch That Cow
- 【HDU2717】-Catch that cow
- Catch That Cow
- F - Catch That Cow
- poj3278 - Catch That Cow
- HDOJ Catch That Cow
- 2717Catch That Cow
- POJ3278 Catch That Cow
- 3278Catch That Cow
- Catch That Cow(bfs)
- Catch that cow (H2717)
- POJ3278--Catch That Cow
- Catch That Cow
- Catch That Cow+BFS
- linu 用户及用户组命令操作
- Spring bean的作用域
- #11 Search Range in Binary Search Tree
- pickerView控件的简单使用
- HashMap HashTable区别
- Catch That Cow
- 炸裂的生物钟
- sublime Text 2搭建python开发环境
- Confd与Rancher-metadata结合的妙用
- iOS 远程消息推送
- 内存泄露的总结
- 欢迎使用CSDN-markdown编辑器
- 【剑指offer】合并两个有序的链表
- python文件open()函数参数:r和rb比较