हमें दो लॉकर दिए गए हैं, मान लीजिए L1 और L2 जिनमें सिक्कों के रूप में कुछ धनराशि है। L1 में A सिक्के हैं और L2 में B संख्या के सिक्के हैं। हमें लॉकर से धनराशि या सिक्के इस तरह निकालने हैं कि निकाली गई धनराशि अधिकतम हो। हर बार जब किसी लॉकर से सिक्के निकाले जाते हैं, तो उसे उसके पिछले काउंट से 1 कम सिक्कों से बदल दिया जाता है। यदि हम L1 से A सिक्के निकालते हैं तो इसे A-1 सिक्कों से बदल दिया जाएगा और यदि हम L2 से B सिक्के निकालते हैं तो इसे B-1 सिक्कों से बदल दिया जाएगा। कार्य दो चरणों में निकाली गई धनराशि को अधिकतम करना है। अर्थात सिक्के केवल दो बार निकाले जा सकते हैं।
इनपुट
L1 - 10, L2 - 11
आउटपुट
दो चरणों में निकाली जा सकने वाली अधिकतम धनराशि: 21
व्याख्या
चरण 1 में हम L2 से 11 सिक्के निकालते हैं, L2 को 11-1=10 सिक्कों से बदल दिया जाएगा।
चरण 2 में L1 और L2 दोनों में 10 सिक्के हैं इसलिए किसी से भी निकाले जा सकते हैं और हमारे पास 11+10=21 सिक्के हैं जो अधिकतम है।
इनपुट
L1 - 5, L2 - 5
आउटपुट
दो चरणों में निकाली जा सकने वाली अधिकतम धनराशि: 10
व्याख्या
चरण 1 में हम L1 से 5 सिक्के निकालते हैं, L1 को 5-1=4 सिक्कों से बदल दिया जाएगा।
चरण 2 में L1 में 4 सिक्के हैं और L2 में 5 सिक्के हैं इसलिए हम L2 से 5 सिक्के लेते हैं और हमारे पास 5+5=10 सिक्के हैं जो अधिकतम है।
उपयोग किया गया दृष्टिकोण
हमारे पास दो लॉकर L1 और L2 हैं जिनमें कुछ सिक्के हैं।
फ़ंक्शन maxMoney(int A, int B) लॉकर में सिक्कों की संख्या को इनपुट के रूप में लेता है।
maxMoney() के अंदर हम चर 'money' लेते हैं अधिकतम धनराशि संग्रहीत करने के लिए।
प्रारंभ में money A या B से जो भी अधिक हो उसका मान लेता है (money = A > B ? A : B)।
money के मान की तुलना A या B से करके जांचें कि किस कंटेनर के सिक्के निकाले गए।
अब उस कंटेनर को पिछली राशि से 1 कम से बदलें (A-- या B--)।
फिर से money में A या B से जो भी अधिक हो उसका मान जोड़ें (money += A > B ? A : B)।
उदाहरण
कोड: #include <stdio.h> #include <math.h> // अधिकतम सिक्के लौटाने वाला फ़ंक्शन जो हम प्राप्त कर सकते हैं int maxMoney(int A, int B){ // सिक्के लें int money = A > B ? A : B; // लॉकर को 1 कम सिक्कों से फिर से भरें if (money == A) A--; else B--; // फिर से निकालें money += A > B ? A : B; return money; } // ड्राइवर कोड int main(){ int L1 = 8, L2 = 9; printf("दो चरणों में निकाली जा सकने वाली अधिकतम धनराशि: %d", maxMoney(L1, L2)); return 0; } आउटपुट
उपरोक्त कोड चलाने पर निम्नलिखित आउटपुट उत्पन्न होगा:
दो चरणों में निकाली जा सकने वाली अधिकतम धनराशि: 17