এই টিউটোরিয়ালে আমরা শিখব কিভাবে n সংখ্যক বল k সংখ্যক ছাত্রের মধ্যে বিতরণ করতে হয় যাতে কাউকে কষ্ট না হয়।
আইডিয়াটি সহজ, у нас 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
উপসংহার
টিউটোরিয়াল সম্পর্কে কোনো প্রশ্ন থাকলে কমেন্ট সেকশনে জানান।