>  기사  >  백엔드 개발  >  C++ 과제 제출

C++ 과제 제출

WBOY
WBOY앞으로
2023-09-13 18:29:06990검색

C++ 과제 제출

이 튜토리얼에서는 감독관에게 들키지 않고 과제를 통과할 수 있는 방법을 찾는 알고리즘을 작성해야 합니다. 각 학생은 감독관에게 과제를 제출해야 합니다. 학생 A의 과제가 학생 B에게 주어졌으므로 학생 B는 감독관이 알리지 않은 상태에서 학생 A에게 과제를 돌려주거나 전달해야 합니다.

모든 학생들이 줄을 서있습니다. 우리는 들키지 않고 학생 A에게 과제를 다시 전달할 수 있는 방법을 찾아야 합니다. 과제를 통과할 수 있는 다양한 요구 사항은 다음과 같습니다. -

  • 학생 A(지수 i)는 지수 (i- 1) 및 (i+1)에 위치한 이웃에게 과제를 전달할 수 있습니다.

  • 학생 작업을 제출, 수락 또는 보류할 수 있습니다.

  • 감독관은 인덱스 [il, rl]의 모든 학생을 모니터링하고 있습니다.

  • 학생이 감독관의 모니터링 범위 내에 있는 경우 과제를 보내거나 받을 수 없습니다.

  • 학생은 감독관의 모니터링 범위 내에 있는 동안에는 과제를 보내거나 받을 수 없습니다. p>

  • 학생들이 이 범위 내에서 과제를 수행하면 감독관이 이를 알아차리지 못할 것입니다.

4개의 입력 p, q, r, s가 주어졌습니다. 여기서 p는 총 학생 수, q는 감독관이 il부터 rl까지 모니터링하는 총 단계 수, c는 학생 A의 위치, d는 학생 A의 위치이다. B학생의 입장.

각 단계(q)에는 3개의 입력이 있습니다. -

  • 주어진 범위에 대해 감독관이 모니터링한 총 시간입니다.

  • 맨 왼쪽 격리 구역에서는 감시관이 지켜보고 있습니다.

  • 맨 오른쪽 격리 구역에서는 감시관이 지켜보고 있습니다. , 보고 있다.

학생의 활동(보고 있는 경우)이 과제를 통과(왼쪽/오른쪽)하거나 유지하는지 나타내는 "왼쪽", "오른쪽" 및 "보류"라는 3개 단어로 구성된 출력 순서가 필요합니다. 예를 들어,

Steps

Input

8 3 2 7
1 4 6
2 1 8
3 5 6

Output

Right
Keep
Right
Right
Right
Right

Explanation

이 지침에 따르면 과제는 캡처되지 않고 인덱스 2의 학생에서 인덱스 7의 학생으로 전달됩니다.

Input

5 1 1 3
1 2 5

Output

Keep
Right
Right

Explanation

이 지침에 따라 과제는 캡처되지 않고 인덱스 1의 학생에서 인덱스 3의 학생으로 전달됩니다.

해결책 찾기에 가까워짐

어떤 경우에 감독관이 범위 내에서 현재 과제를 수행 중인 학생이나 과제가 전송되는 학생을 모니터링하는 경우 해당 학생은 감독관과 함께 남게 됩니다. 사명. 그렇지 않으면 그는 최종 골을 향하는 인접한 학생에게 공을 패스합니다.

Example

#include <bits/stdc++.h>
using namespace std;
void solve(int p, int q, int r, int s,
long t[], int l[], int ar[]){
   int dir;
   string val;
   if (r < s) {
      dir = 1;
      val = "Right";
   } else {
      dir = -1;
      val = "Left";
   }
   string answer = "";
   int i = 0, current = r;
   long tim = 1;
   while (1) {
      if (i < q && tim == t[i]) {
         if ((current >= l[i] && current <= ar[i]) ||
         (current + dir >= l[i] && current + dir <= ar[i])) {
            answer += "Keep\n";
            tim++;
            i++;
            continue;
         }
         i++;
      }
      current += dir;
      answer += val+"\n";
      tim++;
      if (current == s)
         break;
   }
   cout << answer << endl;
}
int main(){
   int p = 8, q = 3, r = 2, s = 7;
   long t[q + 2] = { 1,2,3 };
   int l[q + 2] = { 4,1,5 };
   int ar[q + 2] = { 6,8,6 };
   solve(p, q, r, s, t, l, ar);
   return 0;
}

Output

Right
Keep
Right
Right
Right
Right

Conclusion

이 튜토리얼에서 우리는 C++ 코드와 함께 감독관에게 들키지 않고 과제를 통과하는 방법을 찾는 알고리즘을 작성하는 방법을 배웠습니다. 이 코드를 Java, Python 및 기타 언어로 작성할 수도 있습니다. 위의 알고리즘은 경쟁적인 코딩 대회에서 중요한 알고리즘입니다. 이 질문에는 C++ 코드를 통해 해결한 실제 문제가 포함되어 있습니다. 이 튜토리얼이 도움이 되었기를 바랍니다.

위 내용은 C++ 과제 제출의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제