B - Catch That Cow(BFS)
来源:互联网 发布:道道通端口修改器 编辑:程序博客网 时间:2024/06/05 09:52
简单、BFS,注意的是因为有-1,所以状态会有返回并反复将相同的状态装入队列的情况,为了增加效率,防止内存超出,应该标记每次所经历过的状态,防止对同一个状态的多次访问。
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
Output
Sample Input
5 17
Sample Output
4
Hint
#include<cstdio>#include<iostream>#include<algorithm>#include<queue>#include<cstring>using namespace std;int n, k;//int cnt = 0;int d[100005];int vis[100005];int bfs(void){ memset(d, -1, sizeof(d)); memset(vis, 0, sizeof(vis)); if(n == k) return 0; queue<int> que; que.push(n); d[n] = 0; vis[n] = 1; while(que.size()) { int q = que.front(); que.pop(); if(q == k) break; if(2 * q < 100005 && vis[2*q] == 0) { d[2 * q] = d[q] + 1; vis[2*q] = 1; que.push(2*q); } if(q + 1 < 100005 && vis[q+1] == 0) { d[q+1] = d[q] +1; vis[q+1] = 1; que.push(q+1); } if(q - 1 >= 0 && vis[q-1] == 0) { d[q-1] = d[q] +1; vis[q-1] =1; que.push(q-1); } } return d[k];}int main(){ cin>>n>>k; int cnt = bfs(); cout<<cnt<<endl; return 0;}
- B - 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
- Catch That Cow(BFS)
- Catch That Cow BFS
- Catch That Cow (BFS)
- Catch That Cow【bfs】
- Catch That Cow(bfs)
- Catch That Cow BFS
- bfs-catch that cow
- Catch That Cow(bfs)
- Log4j多线程中区分不同线程
- 智能家居DIY真的很easy的实现了
- unity3d中Transform组件变量详解
- Android 服务类Service 的详细学习
- Android-Composite
- B - Catch That Cow(BFS)
- 我就纳闷了。。。红黑联盟。。的水印真的好明显,欺负我大csdn
- VS2012 C语言dll文件生成和C#调用
- 欢迎使用CSDN-markdown编辑器
- Android开发过程中创建一个Message对象使用方法区别
- 条件随机场(CRF)原理和实现
- JAVA技术框架选型
- nodejs socket.io初探
- 三种Python下载url并保存文件的代码