इस ट्यूटोरियल में, हम सीखेंगे कि बिना किसी को चोट पहुँचाए 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
निष्कर्ष
यदि ट्यूटोरियल में आपके कोई प्रश्न हैं, तो उनका टिप्पणी अनुभाग में उल्लेख करें।