C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

新しい怒っている学生がいなくなってから最低何分かを数えるC++プログラム


長さnの文字列Sがあり、「A」または「P」の2種類の文字しかないとします。 n人の生徒が並んでいます。S[i]='A'の場合、i番目の生徒は怒っています。'P'の場合、S[i]は忍耐強いと言います。インデックスiで怒っている学生は、毎分インデックスi + 1で患者の学生を攻撃します。最後の学生は、怒っていても、誰も攻撃できません。忍耐強い学生を殴った後、その学生も怒ります。その後、新入生が怒らないようにするための最小時間を見つける必要があります。

したがって、入力がS ="PPAPP"の場合、出力は2になります。これは、最初の1分後に文字列が「PPAAP」になり、2分後に「PPAAA」になり、新しい学生が再び怒ることがないためです。

ステップ

これを解決するには、次の手順に従います-

n := size of S
ans := 0, cnt = 0
for initialize i := n - 1, when i >= 0, update (decrease i by 1), do:
   if S[i] is same as 'P', then:
      (increase cnt by 1)
   Otherwise
      ans := maximum of ans and cnt
      cnt := 0
return ans

理解を深めるために、次の実装を見てみましょう-

#include <bits/stdc++.h>
using namespace std;

int solve(string S) {
   int n = S.size();
   int ans = 0, cnt = 0;
   for (int i = n - 1; i >= 0; i--) {
      if (S[i] == 'P') {
         cnt++;
      } else {
         ans = max(ans, cnt);
         cnt = 0;
      }
   }
   return ans;
}
int main() {
   string S = "PPAPP";
   cout << solve(S) << endl;
}

入力

PPAPP

出力

2

  1. C ++で簡単なプログラムを作成する方法は?

    C ++で非常に単純なプログラムを取得するには、最初にそれを設定してから、そのプログラムを作成する必要があります。次の手順は、非常に単純なプログラムを使用してC++で開始する方法を示しています。 C++コンパイラを入手する これは、C++でのプログラミングの学習を開始する前に実行したい最初のステップです。すべての主要なOSプラットフォームで利用できる優れた無料のC++コンパイラがあります。プラットフォームに適したものをダウンロードするか、https://www.tutorialspoint.com/compile_cpp_online.phpでtutorialspoint.comのオンラインコ

  2. Pythonで最終戦に勝つスイマーの数を数えるプログラム

    長さがnであるnumsと呼ばれる数のリストがあるとします。このリストにある要素は、競技会でのスイマーの現在のスコアを表しています。ファイナルマッチでは、この現在のラウンドの1位の勝者はnスコアを獲得し、2位の勝者はn-1ポイントを獲得します。現在のラウンドの後の最終ラウンドでまだ競争に勝つことができるスイマーの数をチェックする必要があります。最初のポイントが同点の場合は、それも勝利としてカウントされます。 したがって、入力がnums =[9、6、11、12]の場合、出力は3になります。現在、スコア9、11、および12にいるスイマーは、最終スコアが[13 、9、13、13]。つまり、スコア9の