> 백엔드 개발 > C#.Net 튜토리얼 > openjudge 2971: 소 문제 해결 프로세스 파악(코드 포함)

openjudge 2971: 소 문제 해결 프로세스 파악(코드 포함)

little bottle
풀어 주다: 2019-04-24 11:56:41
앞으로
4655명이 탐색했습니다.

이 글은 주로 openjudge 2971: Catch the Cow의 문제 해결 과정을 다루고 있습니다. 도움이 필요한 친구들에게 도움이 되길 바랍니다.

총 시간 제한: 2000ms

메모리 제한: 65536kB

Description

농부는 소의 위치를 ​​알고 있고 그것을 잡고 싶어합니다. 농부와 소는 모두 수직선 위에 있습니다. 농부는 N(0

1. X에서 X-1 또는 X+1로 이동하는 데는 1분이 걸립니다.

2. X에서 2*X로 이동하세요. 각 이동에는 1분이 소요됩니다.

소가 농부의 행동을 모르고 가만히 서 있다고 가정해 보세요. 농부가 소를 잡는 데 걸리는 최소 시간은 얼마입니까?

입력

두 개의 정수 N과 K

출력

정수, 농부가 소를 잡는 데 걸리는 최소 시간(분)

샘플 입력

5 17

샘플 출력

4

이 질문은 물 질문입니다. 하지만. 매우 혼란스럽습니다. 요약하면 BFS는

1이며 배열이 충분히 열려 있습니다.

2. 소와 노인의 방향이 판단됩니다.

3. 팀 합류에 대한 판단을 반복합니다.

4, 초월적 판단.

5, 좋은 성격이에요. 이것이 핵심입니다.

코드는 다음과 같습니다.

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: 소 문제 해결 프로세스 파악(코드 포함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
c++
원천:cnblogs.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿