ホームページ  >  記事  >  バックエンド開発  >  C++ 課題を提出する

C++ 課題を提出する

WBOY
WBOY転載
2023-09-13 18:29:06955ブラウズ

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 つの単語の出力シーケンスが必要です:「left」、「right」、「hold」。課題 (左/右) を通じて生徒のアクティビティ (視聴している場合) を示します。またはそのままにしておいてください。たとえば、

ステップ

入力

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

出力

Right
Keep
Right
Right
Right
Right

説明

これらの指示に従って、課題はキャプチャされることなく、インデックス 2 の生徒からインデックス 7 の生徒に転送されます。

入力

5 1 1 3
1 2 5

出力

Keep
Right
Right

説明

次の指示に従ってくださいの場合、課題はキャプチャされることなく、インデックス 1 の学生からインデックス 3 の学生に転送されます。

解決策に近づく

特定のインスタンスで、監督官が範囲内で、現在課題を行っている生徒、または課題が送信されている生徒のいずれかを監視している場合、その後、生徒はその課題に彼と一緒に残ります。それ以外の場合は、最終ゴールの方向にある隣の生徒にボールをパスします。

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

出力

Right
Keep
Right
Right
Right
Right

結論

このチュートリアルでは、監督なしで機能するアルゴリズムを見つけるためのアルゴリズムを作成する方法を学びました。このケースは、代入メソッドと C コードを通じて説明されます。このコードは Java、Python、その他の言語でも記述できます。上記のアルゴリズムは、競技コーディングコンテストにおいて重要なアルゴリズムです。この質問には、C コードを通じて解決した実際の問題が含まれています。このチュートリアルがお役に立てば幸いです。

以上がC++ 課題を提出するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。