POJ 3278 Catch That Cow (BFS)
2017-01-22 15:50
453 查看
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 KOutput
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
题意
农夫需要找到他的牛,农夫现在所在位置是N,牛在K点,假设牛是不动的,农夫有三种走法:向前走一步(N+1)
向后走一步(N-1)
跳到当前位置两倍处(2*N)
问,最少走多少次才能找到他的牛。
思路
简单的bfs,把农夫当前位置加入队列,然后出队判断每一个点,并模拟下一次的走法,注意的是,需要标记走过的点,否则会爆栈。AC代码
#include <iostream> #include<stdio.h> #include<stdlib.h> #include<string.h> #include<queue> #include<math.h> #define MAXX 100005 using namespace std; bool isvisted[MAXX]; struct node { int n; int time; node(int n,int time) { this->n=n; this->time=time; } }; void bfs(int n,int k) { memset(isvisted,false,sizeof(isvisted)); node ans=node(n,0); isvisted =true; queue<node>sk; sk.push(ans); while(!sk.empty()) { node p=sk.front(); sk.pop(); isvisted[p.n]=true; //标记走过的点 if(p.n==k) //找到 { ans=p; break; } if(p.n+1<MAXX&&!isvisted[p.n+1]) //三种走法 sk.push(node(p.n+1,p.time+1)); if(p.n-1>=0&&!isvisted[p.n-1]) sk.push(node(p.n-1,p.time+1)); if(p.n*2<MAXX&&!isvisted[p.n*2]) sk.push(node(p.n*2,p.time+1)); } printf("%d\n",ans.time); } int main() { int n,k; while(~scanf("%d%d",&n,&k)) bfs(n,k); return 0; }
相关文章推荐
- POJ 3278-Catch That Cow(BFS-一维广搜)
- poj3278 Catch That Cow(BFS)
- Poj 3278 BFS(不多说话) Catch That Cow
- POJ 3278 && HDU 2717 Catch That Cow(bfs)
- Catch That Cow POJ - 3278 图论模型 BFS
- POJ 3278 Catch That Cow(BFS)
- POJ 3278 Catch That Cow(BFS)
- poj 3278 Catch That Cow bfs
- poj 3278 Catch That Cow(bfs)
- poj 3278 Catch That Cow (BFS剪枝)
- POJ 3278 Catch That Cow (Java,bfs)
- POJ 3278 Catch That Cow (bfs)
- poj 3278 Catch That Cow bfs
- Problem C POJ 3278 Catch That Cow(三入口bfs)
- POJ 3278 Catch That Cow (BFS)
- Catch That Cow POJ - 3278 BFS入门
- POJ 3278 Catch That Cow(图论:BFS)
- POJ 3278 Catch That Cow(BFS广度优先搜索)
- poj 3278 Catch That Cow(bfs)
- poj-3278-Catch That Cow【BFS】