Computer >> Máy Tính >  >> Lập trình >> C ++

Phân phối tất cả các quả bóng mà không cần lặp lại trong Chương trình C ++

Trong hướng dẫn này, chúng ta sẽ học cách phân phát n quả bóng cho k học sinh mà không làm ai bị thương.

Ý tưởng rất đơn giản, chúng ta có n quả bóng với các màu sắc khác nhau cần được phân phát cho các học sinh. Chúng tôi không phải đưa nhiều hơn một quả bóng cùng màu cho bất kỳ học sinh nào. Nếu một học sinh có thể lấy nhiều hơn một quả bóng cùng màu thì không nên phân phối.

Hãy xem một ví dụ.

Đầu vào

n = 10
k = 5
ballsColors = "rrrgbrbgbr"

Đầu ra

Yes

Không màu nào nhiều hơn số học sinh (k). Vì vậy, không học sinh nào nhận được nhiều hơn một quả bóng cùng màu.

Hãy xem các bước để giải quyết vấn đề.

  • Khởi tạo các màu n, k và bóng.

  • Khởi tạo bản đồ để lưu trữ số lượng màu của các quả bóng.

  • Lặp lại các màu của quả bóng và tìm số lượng của mỗi màu bóng.

  • Bây giờ, hãy lặp lại số lượng của mỗi quả bóng.

    • Nếu màu của quả bóng nào nhiều hơn số học sinh thì không thể phân phối.

    • Nếu không, chúng ta có thể phân phối bóng.

  • In kết quả.

Ví dụ

Hãy xem mã.

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

Đầu ra

Nếu bạn chạy để thực hiện chương trình trên, thì bạn sẽ nhận được kết quả sau.

Yes

Kết luận

Nếu bạn có bất kỳ câu hỏi nào trong hướng dẫn, hãy đề cập đến chúng trong phần bình luận.