Maison  >  Article  >  développement back-end  >  openjudge 2971 : Attrapez le processus de résolution de problèmes de vache (avec code)

openjudge 2971 : Attrapez le processus de résolution de problèmes de vache (avec code)

little bottle
little bottleavant
2019-04-24 11:56:414583parcourir

Cet article parle principalement du processus de résolution de problèmes d'openjudge 2971 : Catch the Cow. Les amis dans le besoin peuvent en apprendre davantage. J'espère que cela pourra vous être utile.

Durée totale : 2000 ms

Limite de mémoire : 65536 Ko

Description

L'agriculteur connaît l'emplacement d'une vache et veut l'attraper. L'agriculteur et la vache sont situés sur la droite numérique. L'agriculteur commence au point N (0<=N<=100000) et la vache commence au point K (0<=K<=100000). Le fermier a deux manières de se déplacer :

1 Passer de X à X-1 ou X+1. Chaque déplacement prend une minute.

2. Passez de X à 2*X. Chaque mouvement prend une minute.

Supposons que la vache ignore les actions de l’agriculteur et reste immobile. Quel est le temps minimum nécessaire à l’agriculteur pour attraper la vache ?

Saisir

deux entiers, N et K

Sortir

un entier, le nombre minimum de minutes qu'il faut à l'agriculteur pour attraper la vache

Exemple d'entrée

5 17

Exemple de sortie

4

Cette question est une question sur l'eau. mais. C'est très déroutant. Pour résumer, BFS vaut

1, le tableau est suffisamment ouvert.

2. Le jugement de direction de la vache et du vieux.

3. Répétez le jugement de rejoindre l'équipe.

4, jugement transcendantal.

5. Bon caractère. C'est la clé.

Le code est le suivant :

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'est tout simplement gênant.

Tutoriels associés : Tutoriel vidéo C++

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer