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

C++プログラムで繰り返しなしですべてのボールを配布する


このチュートリアルでは、誰も傷つけずにk人の生徒にn個のボールを配布する方法を学びます。

アイデアは単純です。生徒に配布する必要のあるさまざまな色のボールがn個あります。生徒に同じ色のボールを複数与える必要はありません。生徒が同じ色のボールを複数入手できる場合は、配布は行わないでください。

例を見てみましょう。

入力

n = 10
k = 5
ballsColors = "rrrgbrbgbr"

出力

Yes

生徒数(k)を超える色はありません。したがって、同じ色のボールを複数受け取る生徒はいないでしょう。

問題を解決するための手順を見てみましょう。

  • n、k、およびボールの色を初期化します。

  • マップを初期化して、ボールの色数を保存します。

  • ボールの色を繰り返して、各ボールの色の数を見つけます。

  • 次に、各ボールの数を繰り返します。

    • ボールの色が生徒の数よりも多い場合、配布することはできません。

    • それ以外の場合は、ボールを配布できます。

  • 結果を印刷します。

コードを見てみましょう。

#include <bits/stdc++.h>
using namespace std;
bool canDistributeBalls(string ballsColors, int n, int k) {
   map<char, int> charCount;
   for (int i = 0; i < n; i++) {
      charCount[ballsColors[i]]++;
   }
   map<char , int >::iterator itr;
   for(itr = charCount.begin(); itr != charCount.end(); itr++) {
      if (itr->second > k) {
         return false;
      }
   }
   return true;
}
int main() {
   int n = 10, k = 5;
   string ballsColors = "rrrgbrbgbr";
   if (canDistributeBalls(ballsColors, n, k)) {
      cout << "Yes" << endl;
   }
   else {
      cout << "No" << endl;
   }
   return 0;
}

出力

上記のプログラムを実行するために実行すると、次の結果が得られます。

Yes

結論

チュートリアルに質問がある場合は、コメントセクションにそのことを記載してください。


  1. 二次方程式のすべての根を見つけるためのC++プログラム

    二次方程式はax2の形式です。 + bx+c。二次方程式の根は次の式で与えられます- 3つのケースがあります- b 2 <4 * a * c-ルートは本物ではありません。つまり、複雑です b 2 =4 * a * c-根は実数であり、両方の根は同じです。 b 2 4 * a * c-根は実数であり、両方の根は異なります 二次方程式の根を見つけるプログラムは次のとおりです。 例 #include<iostream> #include<cmath> using namespace std; int main() {    in

  2. セミコロンなしでC++プログラムを作成しますか?

    セミコロンなしでC++プログラムを作成する方法は複数あります。これを行うことは非常に悪い習慣であり、実際のコードでは決して使用しないでください。これは、情報コンテンツとして提示されます。セミコロンなしでC++プログラムを作成する最も簡単な方法は、ifステートメントを使用することです。 C ++のほとんどすべてのステートメントは、式として扱うことができます。したがって、ステートメントを括弧の空白のペアを含むifステートメント内に配置すると、セミコロンで終了する必要がなくなります。たとえば、 例 #include<iostream> int main() {