C++程式中無重複地分配所有球


在本教程中,我們將學習如何將n個球分配給k個學生,而不會讓任何人吃虧。

這個想法很簡單,我們有n個不同顏色的球需要分配給學生。我們不能給任何學生超過一個相同顏色的球。如果允許學生獲得多個相同顏色的球,則不應進行分配。

讓我們來看一個例子。

輸入

n = 10
k = 5
ballsColors = "rrrgbrbgbr"

輸出

Yes

沒有一種顏色的球的數量超過學生人數 (k)。因此,沒有學生會得到超過一個相同顏色的球。

讓我們看看解決問題的步驟。

  • 初始化n、k和球的顏色。

  • 初始化一個map來儲存球的顏色計數。

  • 迭代球的顏色並找到每種球顏色的數量。

  • 現在,遍歷每種球的數量。

    • 如果任何球的顏色數量大於學生人數,則無法分配。

    • 否則我們可以分配球。

  • 列印結果。

示例

讓我們看看程式碼。

#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

結論

如果您在本教程中有任何疑問,請在評論區提出。

更新於:2021年1月27日

183 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.