POJ_3278 Catch That Cow(BFS)
来源:互联网 发布:淘宝客要怎么推广 编辑:程序博客网 时间:2024/05/29 13:05
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.
题目在这里~
题目描述:
给出一个数字,可执行三种操作,+1,-1,×2.问最少经过多少步能到达目标点。
题解:
因为思路很简单,就是一道BFS,手写DFS错了很久,关键在于不好记忆化。放到队列里面标记很好的解决了这个问题。已经在队列里面的点不需要继续放入,防止了重复计算。
代码:
#include <iostream>#include <math.h>#include <cstring>#include <algorithm>#include <queue>using namespace std;struct node{ int val; int cos;};int num;int N,K;queue<node> q;int show[100000+2];void DFS(int x,int time);int main(){ while( cin>>N>>K ) { memset(show,0,sizeof(show)); show[N]=1; num = -1; node a,tem; show[N]=1; a.val=N; a.cos=0; q.push(a); while( !q.empty() ) { node t; tem = q.front(); q.pop(); if( tem.val == K ) { num=tem.cos; break; } if( tem.val + 1 <= 100000 && show[tem.val+1]!=1 ) { t.val=tem.val+1; t.cos=tem.cos+1; q.push(t); show[tem.val+1]=1; } if( tem.val-1 >= 0 && show[tem.val-1]!=1) { t.val=tem.val-1; t.cos=tem.cos+1; q.push(t); show[tem.val-1]=1; } if( tem.val*2 <= 100000 && show[tem.val*2]!=1 ) { t.val=tem.val*2; t.cos=tem.cos+1; q.push(t); show[tem.val*2]=1; } } cout<<num<<endl; } return 0;}
- 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
- Catch that cow(POJ_3278)
- POJ_3278 Catch That Cow
- POJ_3278 Catch That Cow 解题报告
- Catch That Cow(bfs)
- Catch That Cow+BFS
- Catch That Cow BFS
- Catch That Cow BFS
- Catch That Cow(BFS)
- Catch That Cow BFS
- Catch That Cow (BFS)
- Catch That Cow【bfs】
- Catch That Cow(bfs)
- Catch That Cow BFS
- 软件测试职业规划
- FZU 2082 过路费 (树链剖分)
- 3690状态压缩+暴力
- 关于求第几天的问题
- JPA相关内容
- POJ_3278 Catch That Cow(BFS)
- 链表反转的递归和非递归实现方式
- Oracle 11g Golden Gate DDL单向同步实例演示
- C语言代码实现 ls
- 3764树上的异或值(自己研究的静态字典树)
- JS获取表单所有元素(键值对方式)
- less参考手册
- sql server execution plan - 执行计划的诡异 ( 二 )
- java时间转化函数