poj 3278 Catch That Cow bfs
来源:互联网 发布:淘宝冲印上传系统 编辑:程序博客网 时间:2024/06/16 19:38
链接:http://poj.org/problem?id=3278
Description
Farmer John has been informed of the location of a fugitive cow and wants to catch her immediately. He starts at a pointN (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 orX+ 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
题意:从n到k,每一步可以+1,-1,*2,求到k的最短步数
思路:最短路问题,bfs,基础题,与石油大学的“奇怪的电梯”异曲同工
注意:
1.小剪枝,数组不能越界不然re
2.n>=k,只能不停-1
代码:
#define _CRT_SBCURE_MO_DEPRECATE #include<iostream> #include<stdlib.h> #include<stdio.h> #include<cmath> #include<algorithm> #include<string> #include<string.h> #include<set> #include<queue> #include<stack> #include<functional> using namespace std;const int maxn = 100000 + 10;const int INF = 0x3f3f3f3f;struct node {int x;int t;};int n, k;int vis[maxn];int bfs(int s) {memset(vis, 0, sizeof(vis));queue<node>Q;node a;a.x = s;a.t = 0;Q.push(a);while (!Q.empty()) {node now = Q.front();Q.pop();vis[now.x] = 1;if (now.x == k)return now.t;node next;for (int i = 0; i < 3; i++) {if (i == 0) {//后退一格if (now.x - 1 > 0 && !vis[now.x - 1] && now.x - 1 <= maxn) {next.x = now.x - 1;next.t = now.t + 1;vis[next.x] = 1;Q.push(next);}}if (i == 1) {//前进一格if (now.x + 1 <= maxn && !vis[now.x + 1]) {next.x = now.x + 1;next.t = now.t + 1;vis[next.x] = 1;Q.push(next);}}if (i == 2) {if (now.x * 2 <= maxn && !vis[now.x*2]) {next.x = now.x*2;next.t = now.t + 1;vis[next.x] = 1;Q.push(next);}}}}}int main(){while (scanf("%d %d", &n, &k) != EOF && n != -1 && k != -1) {if (n >= k) printf("%d", n - k);else printf("%d\n", bfs(n));}system("pause");return 0;}
- poj 3278 Catch That Cow BFS
- poj 3278 Catch That Cow BFS
- POJ 3278 Catch That Cow BFS
- poj 3278 bfs(Catch That Cow)
- 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 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 (BFS)
- poj 3278 Catch That Cow 【BFS】
- POJ--3278:Catch That Cow (BFS)
- Zookeeper的安装和配置
- Eclipse+Maven创建webapp项目
- 解释器模式
- 第十周项目1——二叉树算法库
- Zookeeper服务器集群的搭建
- poj 3278 Catch That Cow bfs
- 链接分析学习
- MySQL第四天---多表操作(1对1、1对多、多对多)
- mysql查询时间只有2个小数点,可以用phpMyAdmin更精确
- [置顶] [总结]FFMPEG视音频编解码零基础学习方法
- html,css,javascrip,canvas快速查询列表
- 实战 Lucene,第 1 部分: 初识 Lucene
- System类、Math类、Calendar类
- iOS 启动连续闪退保护方案