Catch That Cow
来源:互联网 发布:spss软件如何下载 编辑:程序博客网 时间:2024/06/05 09:36
Catch That Cow
Time Limit: 2000MS Memory Limit: 65536KTotal Submissions: 75017 Accepted: 23685
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.
#include<stdio.h> #include<string.h> #include<queue> #include<algorithm> using namespace std; int step[100010]; int n,m; void bfs(int n,int m) { memset(step,0,sizeof(step)); queue<int>q; q.push(n); while(!q.empty()) { int now=q.front(); q.pop(); if(now==m) break; for(int i=0;i<3;i++) { int next; if(i==0) next=now+1; if(i==1) next=now-1; if(i==2) next=now*2; if(next>=0&&next<=100000&&!step[next]) { step[next]=step[now]+1; q.push(next); } } } } int main() { while(scanf("%d%d",&n,&m)!=EOF) { bfs(n,m); printf("%d\n",step[m]); } return 0; }
#include<iostream> #include<queue> using namespace std; #define M 100001 #define INF 10000000 struct POINT { int pos; int step; }now,next; queue<POINT>Q; bool visited[M]; int n,k; int bfs() { while(!Q.empty()) Q.pop(); now.pos=n; now.step=0; visited[now.pos]=true; Q.push(now); while(!Q.empty()) { now=Q.front(); Q.pop(); next=now; for(int i=0;i<3;i++) { if(i==0) next.pos=now.pos+1; if(i==1) next.pos=now.pos-1; if(i==2) next.pos=now.pos*2; next.step=now.step+1; if(next.pos==k) return next.step; if(next.pos<0||next.pos>M) continue; if(!visited[next.pos]) { visited[next.pos]=true; Q.push(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; } }
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
- jsp-简单小程序(乘法表、)
- 协方差矩阵
- jsp-九大内置对象
- achartengine图标框架的使用心得
- python os.system()和os.popen()
- Catch That Cow
- popwindows
- 偷笑偷笑偷笑这就是有病的表现
- 去除空格的函数
- Sky Map
- Spring4笔记----动态代理
- 软件设计架构之DDD,SOA,原始,REST,Actor,CQRS
- PyGobject(四十二)布局容器之ButtonBox
- 反射+注解或去数据库查询语句