समस्या कथन
पानी वाले एन ग्लास और उनकी प्रत्येक क्षमता की एक सूची दी गई है। कार्य बिल्कुल K ग्लास को भरने के लिए आवश्यक न्यूनतम बोतलों की संख्या ज्ञात करना है। प्रत्येक बोतल की क्षमता 100 यूनिट है।
उदाहरण
अगर एन =5, के =4, क्षमता [] ={1, 2, 3, 2, 1}।
- 2, 3, 2 की क्षमता वाले चश्मे को भरने के लिए 8 यूनिट की आवश्यकता होती है।
- इस तरह, बस 1 बोतल खोलना काफी है।
एल्गोरिदम
- बिल्कुल K ग्लास भरने के लिए, सबसे कम क्षमता वाले K ग्लास लें
-
कुल आवश्यक बोतलों की गणना −
. के रूप में की जा सकती है(पहली k गिलास की क्षमता का योग) / (1 बोतल की क्षमता) का सील मूल्य।
उदाहरण
#include <iostream> #include <algorithm> #include <cmath> using namespace std; int minBottles(int *capacity, int n, int k) { sort(capacity, capacity + n); int sum = 0; for (int i = 0; i < k; ++i) { sum += capacity[i]; } return ceil((double)sum/100); } int main() { int capacity[] = {1, 2, 3, 2, 1}; cout << "Min bottles required = " <<minBottles(capacity, 5, 4) << endl; return 0; }
आउटपुट
जब आप उपरोक्त प्रोग्राम को संकलित और निष्पादित करते हैं। यह निम्नलिखित आउटपुट उत्पन्न करता है -
Min bottles required = 1