M - Catch That Cow POJ - 3278
2017-05-20 20:21
316 查看
Think:
1BFS
2反思:注意数组越界+注意标记走过的点
3C++中的STL的queue练习
M - Catch That Cow POJ - 3278
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
Sample Output
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.
以下为Runtime Error代码——数组越界
以下为Accepted代码
1BFS
2反思:注意数组越界+注意标记走过的点
3C++中的STL的queue练习
M - Catch That Cow POJ - 3278
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.
以下为Runtime Error代码——数组越界
#include <cstdio> #include <cstring> #include <queue> using namespace std; struct node{ int x; int step; }a, b; int v[240000]; void BFS(int n, int m); int main(){ int n, m; while(scanf("%d %d", &n, &m) != EOF){ BFS(n, m); } return 0; } void BFS(int n, int m){ queue<struct node> q; a.x = n; a.step = 0; q.push(a); v = 1; while(!q.empty()){ a = q.front(); q.pop(); if(a.x == m){ printf("%d\n", a.step); break; } if(a.x < m && v[a.x+1] == 0){ b.x = a.x + 1; b.step = a.step + 1; q.push(b); v[b.x] = 1; } if(a.x >= 1 && v[a.x-1] == 0){ b.x = a.x - 1; b.step = a.step + 1; q.push(b); v[b.x] = 1; } if(v[a.x*2] == 0){ b.x = a.x*2; b.step = a.step + 1; q.push(b); v[b.x] = 1; } } }
以下为Accepted代码
#include <cstdio> #include <cstring> #include <queue> using namespace std; struct node{ int x; int step; }a, b; int v[240000]; void BFS(int n, int m); int main(){ int n, m; while(scanf("%d %d", &n, &m) != EOF){ BFS(n, m); } return 0; } void BFS(int n, int m){ queue<struct node> q; a.x = n; a.step = 0; q.push(a); v = 1; while(!q.empty()){ a = q.front(); q.pop(); if(a.x == m){ printf("%d\n", a.step); break; } if(a.x < m && v[a.x+1] == 0){ b.x = a.x + 1; b.step = a.step + 1; q.push(b); v[b.x] = 1; } if(a.x >= 1 && v[a.x-1] == 0){ b.x = a.x - 1; b.step = a.step + 1; q.push(b); v[b.x] = 1; } if(a.x <= m && v[a.x*2] == 0){ b.x = a.x*2; b.step = a.step + 1; q.push(b); v[b.x] = 1; } } }
相关文章推荐
- POJ - 3278 Catch That Cow
- POJ 3278 Catch That Cow
- POJ 3278 Catch That Cow
- POJ-3278 Catch That Cow 解题报告
- 文章标题poj 3278 Catch That Cow(bfs实现)
- C - Catch That Cow POJ - 3278
- POJ 3278 Catch That Cow (Java,bfs)
- Catch That Cow POJ - 3278
- POJ 3278 Catch That Cow
- poj 3278 Catch That Cow bfs
- POJ 3278:Catch That Cow 抓住那头牛
- poj 3278 ——Catch That Cow(bfs)
- POJ 3278 Catch That Cow
- [kuangbin带你飞]专题一 简单搜索-C - Catch That Cow POJ - 3278
- Poj 3278 BFS(不多说话) Catch That Cow
- POJ 3278 Catch That Cow
- poj--3278--Catch That Cow(bfs)
- poj 3278 Catch That Cow
- POJ_3278_CatchThatCow
- [kuangbin带你飞]专题1 简单搜索 C - Catch That Cow POJ - 3278