openjudge 2971: Catch the Cow Problem Solving Process (with code)

little bottle
Release: 2019-04-24 11:56:41
forward
4632 people have browsed it

This article mainly talks about the problem-solving process of openjudge 2971: Catch the Cow. Friends in need can learn about it. I hope it can be helpful to you.

Total time limit: 2000ms

Memory limit: 65536kB

Description

The farmer knows the location of a cow and wants to catch it. Both the farmer and the cow are located on the number line. The farmer starts at point N (0<=N<=100000) and the cow starts at point K (0<=K<=100000). The farmer has two ways to move:

1. Move from X to X-1 or X 1. Each move takes one minute.

2. Move from X to 2*X. Each move takes one minute.

Suppose the cow is unaware of the farmer’s actions and stands still. What is the minimum amount of time it takes for the farmer to catch the cow?

Input

two integers, N and K

Output

an integer, the minimum number of minutes it takes for the farmer to catch the cow

Sample input

5 17

Sample output

4

This question is a water question. but. It's very confusing. To sum up, BFS is

1, the array is open enough.

2, Niu and I’s direction judgment.

3, repeat the judgment of joining the team.

4, transcendent judgment.

5, good character. This is the key.

The code is as follows:

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 }

  
Copy after login

It’s simply embarrassing.

Related tutorials: C Video tutorial

The above is the detailed content of openjudge 2971: Catch the Cow Problem Solving Process (with code). For more information, please follow other related articles on the PHP Chinese website!

Related labels:
c++
source:cnblogs.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template