मान लीजिए हमारे पास बॉक्स का एक सेट है जिसे boxTypes नामक 2D सरणी द्वारा दर्शाया गया है, जहां boxTypes[i] में दो तत्व [प्रकार i के बॉक्स की संख्या, प्रकार i के प्रति बॉक्स यूनिट की संख्या] हैं। अब हमारे पास एक और मान k है, जो ट्रक पर रखे जा सकने वाले बॉक्स की अधिकतम संख्या है। हम ट्रक पर रखने के लिए किसी भी बॉक्स का चयन कर सकते हैं जब तक कि बॉक्स की संख्या k से अधिक न हो। हमें ट्रक पर रखे जा सकने वाले यूनिट की अधिकतम कुल संख्या ढूंढनी है।
इसलिए, यदि इनपुट है: boxTypes = [[2,4],[3,3],[4,2]], k = 6, तो आउटपुट 19 होगा, क्योंकि:
- प्रकार 1 के 2 बॉक्स और प्रत्येक में 4 यूनिट
- प्रकार 2 के 3 बॉक्स और प्रत्येक में 3 यूनिट
- प्रकार 3 के 4 बॉक्स और प्रत्येक में 2 यूनिट
चूंकि k = 6, हम प्रकार 1 और 2 के सभी बॉक्स ले सकते हैं, और प्रकार 3 का केवल एक बॉक्स, इसलिए (2*4) + (3*3) + 2 = 8 + 9 + 2 = 19 आइटम होंगे।
हल करने के चरण
- boxTypes को प्रति बॉक्स यूनिट की संख्या के आधार पर सॉर्ट करें (अवरोही क्रम)
- total := 0, fill := 0
- boxTypes में प्रत्येक i के लिए:
- यदि fill + i[0] <= k, तो: fill += i[0], total += i[0] * i[1]
- अन्यथा: total += (k - fill) * i[1], लूप से बाहर निकलें
- total वापस करें
उदाहरण (Python)
def solve(boxTypes, k):
boxTypes.sort(key=lambda x: x[1], reverse=True)
total = 0
fill = 0
for i in boxTypes:
if fill + i[0] <= k:
fill += i[0]
total += i[0] * i[1]
else:
total += (k - fill) * i[1]
break
return total
boxTypes = [[2,4],[3,3],[4,2]]
k = 6
print(solve(boxTypes, k))
इनपुट
[[2,4],[3,3],[4,2]], 6
आउटपुट
19