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
結論
如果您在本教程中有任何疑問,請在評論區提出。
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP