Heim  >  Artikel  >  Backend-Entwicklung  >  Senden Sie eine C++-Aufgabe

Senden Sie eine C++-Aufgabe

WBOY
WBOYnach vorne
2023-09-13 18:29:06955Durchsuche

Senden Sie eine C++-Aufgabe

In diesem Tutorial müssen wir einen Algorithmus schreiben, um einen Weg zu finden, die Aufgabe zu bestehen, ohne vom Prüfer entdeckt zu werden. Jeder Student muss seine Aufgaben beim Betreuer abgeben. Die Aufgabe von Schüler A wird an Schüler B weitergegeben, daher muss Schüler B die Aufgabe an Schüler A zurückgeben bzw. weitergeben, ohne dass der Prüfer dies bemerkt.

Alle Schüler sitzen in der Warteschlange. Wir müssen einen Weg finden, die Aufgabe an Schüler A zurückzugeben, ohne erwischt zu werden. Die verschiedenen Anforderungen, für die sie die Aufgabe bestehen können, sind wie folgt:

  • Student A (bei Index i) kann die Aufgabe an Nachbarn weitergeben, die sich bei Index (i-1) und (i+1) befinden.

  • Studenten kann den Job abgeben, annehmen oder behalten.

  • Der Prüfer überwacht alle Schüler im Index [il, rl].

  • Wenn sich Studierende im Überwachungsbereich der Aufsichtsperson befinden, können sie keine Aufgaben senden oder empfangen.

  • Solange sich Studierende im Überwachungsbereich der Aufsichtsperson befinden, können sie keine Aufgaben senden oder empfangen. p>

  • Wenn Studierende ihre Aufgaben innerhalb dieses Bereichs halten, werden die Aufsichtspersonen sie nicht bemerken.

Wir erhalten vier Eingaben p, q, r, s, wobei p die Gesamtzahl der Schüler ist, q die Gesamtzahl der von der Aufsichtsperson überwachten Schritte von il nach rl ist, c die Position von Schüler A ist, und d ist die Position des Schülers A. Die Position von Student B.

Jeder Schritt (q) hat drei Eingaben –

  • Die Gesamtzeit, die vom Prüfer für den angegebenen Bereich überwacht wird.

  • Im Sicherheitsbereich ganz links beobachtet die Aufsichtsperson.

  • Im Sicherheitsbereich ganz rechts beobachtet die Aufsichtsperson. , zuschauen.

Erfordert eine Ausgabesequenz aus 3 Wörtern: „links“, „rechts“ und „halten“, was die Aktivität des Schülers anzeigt (wenn er zuschaut), entweder die Aufgabe zu bestehen (links/rechts) oder sie zu behalten. Zum Beispiel:

Schritte

Eingabe

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

Ausgabe

Right
Keep
Right
Right
Right
Right

Erklärung

Wenn Sie diese Anweisungen befolgen, wird die Aufgabe vom Schüler bei Index 2 an den Schüler bei Index 7 weitergegeben, ohne erfasst zu werden.

Eingabe

5 1 1 3
1 2 5

Ausgabe

Keep
Right
Right

Erläuterung

Wenn Sie diese Anweisungen befolgen, wird die Aufgabe vom Schüler bei Index 1 an den Schüler bei Index 3 weitergegeben, ohne erfasst zu werden.

Kurz vor der Lösung

Wenn der Prüfer in einem bestimmten Fall entweder den Schüler, der gerade die Aufgabe bearbeitet, oder den Schüler, an den die Aufgabe gesendet wird, innerhalb des Geltungsbereichs überwacht, bleibt dieser Schüler bei der Erledigung Mission. Andernfalls spielt er den Ball einem benachbarten Schüler in Richtung des Endtors zu.

Beispiel

#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;
}

Ausgabe

Right
Keep
Right
Right
Right
Right

Fazit

In diesem Tutorial haben wir gelernt, einen Algorithmus zu schreiben, um einen Weg zu finden, die Aufgabe zu übergeben, ohne vom Prüfer zusammen mit C++-Code entdeckt zu werden. Wir können diesen Code auch in Java, Python und anderen Sprachen schreiben. Der obige Algorithmus ist ein wichtiger Algorithmus für wettbewerbsfähige Codierungswettbewerbe. Diese Frage enthält ein reales Problem, das wir mit C++-Code gelöst haben. Wir hoffen, dass Sie dieses Tutorial hilfreich fanden.

Das obige ist der detaillierte Inhalt vonSenden Sie eine C++-Aufgabe. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen