बॉब एक चोर है। महीनों तक सावधानी से योजना बनाने के बाद, बॉब अंत में एक शानदार दुकान की सुरक्षा प्रणालियों को तोड़ने में सफल हो जाता है।
बॉब के सामने बहुत सी चीज़ें हैं, जिनमें से हर एक की एक वैल्यू और वज़न है। बॉब खुशी से सारी चीज़ें ले लेना चाहता है, लेकिन उसका नैपसैक इतना ही वज़न रख सकता है। बॉब को ध्यान से सोचना है कि कौन सी चीज़ें लेनी हैं, ताकि उसके चुनाव की कुल वैल्यू अधिकतम हो जाए।
आपको यह तय करना है कि कौन-कौन से आइटम लेने हैं, ताकि उसके चुनाव की कुल वैल्यू अधिकतम हो जाए। साथ ही, नैपसैक की वहन क्षमता का भी ध्यान रखना है।
सभी आइटम एक ऐरे के रूप में दर्शाए जाएँगे। हर आइटम का एक वज़न और एक वैल्यू होगी। दी गई सभी वैल्यू पूर्णतः धनात्मक होंगी। बॉब हर आइटम में से सिर्फ एक ही ले सकता है।
उदाहरण के लिए:
Items: [
{ "weight": 5, "value": 10 },
{ "weight": 4, "value": 40 },
{ "weight": 6, "value": 30 },
{ "weight": 4, "value": 50 }
]
Knapsack Maximum Weight: 10
ऊपर दिए उदाहरण में पहले आइटम का वज़न 5 और वैल्यू 10 है, दूसरे आइटम का वज़न 4 और वैल्यू 40 है, और इसी तरह बाकी आइटमों का भी। इस उदाहरण में बॉब को अपनी वैल्यू अधिकतम करने के लिए दूसरा और चौथा आइटम लेना चाहिए। यहाँ उसकी वैल्यू 90 बनती है। वह 90 से ज़्यादा वैल्यू नहीं पा सकता, क्योंकि उसके नैपसैक की वज़न सीमा 10 है।
Exercism पर साइन अप कीजिए और Haskell को 107 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।