我是靠谱客的博主 洁净美女,这篇文章主要介绍openjudge 2971:抓住那头牛 解题过程(附代码),现在分享给大家,希望可以做个参考。

本篇文章主要讲述了openjudge 2971:抓住那头牛的解题过程,有需要的朋友可以了解一下,希望能够对你有帮助。

总时间限制: 2000ms

内存限制: 65536kB

描述

农夫知道一头牛的位置,想要抓住它。农夫和牛都位于数轴上,农夫起始位于点N(0<=N<=100000),牛位于点K(0<=K<=100000)。农夫有两种移动方式:

1、从X移动到X-1或X+1,每次移动花费一分钟。

2、从X移动到2*X,每次移动花费一分钟。

假设牛没有意识到农夫的行动,站在原地不动。农夫最少要花多少时间才能抓住牛?

输入

两个整数,N和K

输出

一个整数,农夫抓到牛所要花费的最小分钟数

样例输入

5 17

样例输出

4

这道题就是一道水题。但是。它非常的坑。总结一下BFS就是

1,数组开够。

2,牛和老夫的方向判断。

3,重复入队的判断。

4,超界的判断。

5,人品好。 这是关键。

代码如下:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
1 #include<cstdio> 2 #include<algorithm> 3 using namespace std; 4 int x,y; 5 struct node 6 { 7 int x,times; 8 }; 9 node q[3000010]; 10 int visit[1000010]; 11 int heads=1,last=1; 12 int main() 13 { 14 scanf("%d%d",&x,&y); 15 if(y<x) 16 { 17   printf("%d",x-y); 18   return 0; 19 } 20 node a; 21 a.x=x;a.times=0; 22 q[heads]=a; 23 while(heads<=last) 24 { 25   node n=q[heads]; 26   heads++; 27   if(n.x==y) 28   { 29   printf("%d",n.times); 30   break; 31   } 32   node n1=n; 33    n1.times++; 34    n1.x+=1; 35   if(!visit[n1.x])q[++last]=n1 , visit[n1.x]=1; 36   n1.x-=2; 37   if(!visit[n1.x])q[++last]=n1 , visit[n1.x]=1; 38   n1.x+=1; 39   n1.x*=2; 40   if(n1.x<=100000&&!visit[n1.x])q[++last]=n1 , visit[n1.x]=1; 41 } 42 return 0; 43 }
登录后复制

简直尴尬。

相关教程:C++视频教程

以上就是openjudge 2971:抓住那头牛 解题过程(附代码)的详细内容,更多请关注靠谱客其它相关文章!

最后

以上就是洁净美女最近收集整理的关于openjudge 2971:抓住那头牛 解题过程(附代码)的全部内容,更多相关openjudge内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(81)

评论列表共有 0 条评论

立即
投稿
返回
顶部