Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

पायथन में फलों को अनुकूलित तरीके से भरने के लिए आवश्यक न्यूनतम लागत खोजने का कार्यक्रम

मान लीजिए कि हमारे पास फल नामक एक सूची है और अन्य दो मान k और कैप हैं। जहाँ प्रत्येक फल [i] के तीन मान हैं:[c, s, t], यह दर्शाता है कि प्रत्येक फल की कीमत c है, उनमें से प्रत्येक का आकार s है, और उनमें से कुल t है। k क्षमता कैप के फलों की टोकरियों की संख्या का प्रतिनिधित्व करता है। हम इस क्रम में फलों की टोकरियों को निम्नलिखित बाधाओं से भरना चाहते हैं -

  • प्रत्येक टोकरी में केवल एक ही प्रकार के फल हो सकते हैं
  • प्रत्येक टोकरी यथासंभव पूर्ण होनी चाहिए
  • प्रत्येक टोकरी यथासंभव सस्ती होनी चाहिए

इसलिए हमें अधिक से अधिक टोकरियाँ भरने के लिए आवश्यक न्यूनतम लागत ज्ञात करनी होगी।

इसलिए, यदि इनपुट फल की तरह है =[[5, 2, 3], [6, 3, 2], [2, 3, 2]] k =2 कैप =4, तो आउटपुट 12 होगा, क्योंकि हम दो फल 0 ले सकते हैं क्योंकि इन दोनों के साथ, हम कुल आकार 2+2=4 के लिए पहली टोकरी भर सकते हैं, इसकी लागत 5+5=10 है। फिर, हम फल 2 में से एक का उपयोग करते हैं क्योंकि यह सस्ता है। इसकी कीमत 2 यूनिट है।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • विकल्प:=एक नई सूची
  • फलों में प्रत्येक त्रिक (c, s, t) के लिए, करें
    • जबकि t> 0, करें
      • fnum :=न्यूनतम तल (कैप / एस) और टी
      • यदि fnum 0 के समान है, तो
        • लूप से बाहर आएं
      • bnum :=t / fnum का तल
      • विकल्पों के अंत में ट्रिपलेट (कैप - fnum * s, fnum * c, bnum) डालें
      • t :=t - bnum * fnum
  • उत्तर:=0
  • विकल्पों की क्रमबद्ध सूची में प्रत्येक ट्रिपल (बाएं_कैप, बीकॉस्ट, बीएनयूएम) के लिए, करें
    • bfill :=न्यूनतम k और bnum
    • उत्तर:=उत्तर + बीकॉस्ट * बीफिल
    • k :=k - bfill
    • यदि k, 0 के समान है, तो
      • लूप से बाहर आएं
  • वापसी उत्तर

उदाहरण

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

def solve(fruits, k, cap):
   options = []
   for c, s, t in fruits:
      while t > 0:
         fnum = min(cap // s, t)
         if fnum == 0:
            break
         bnum = t // fnum

         options.append((cap - fnum * s, fnum * c, bnum))
         t -= bnum * fnum
   ans = 0
   for left_cap, bcost, bnum in sorted(options):
      bfill = min(k, bnum)
      ans += bcost * bfill
      k -= bfill
      if k == 0:
         break

   return ans

fruits = [[5, 2, 3],[6, 3, 2],[2, 3, 2]]
k = 2
cap = 4
print(solve(fruits, k, cap))

इनपुट

[[5, 2, 3],[6, 3, 2],[2, 3, 2]], 2, 4

आउटपुट

12

  1. पायथन में एक छड़ी काटने के लिए न्यूनतम लागत खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास एक मान n और एक सरणी है जिसे कट कहा जाता है। मान लीजिए कि लंबाई n इकाइयों की लकड़ी की छड़ी है। छड़ी को 0 से n तक लेबल किया गया है। यहां कटौती [i] उस स्थिति का प्रतिनिधित्व करती है जहां हम कटौती कर सकते हैं। हमें कटौती क्रम में करनी चाहिए, लेकिन हम कटौती के क्रम को अपनी इच्छानुस

  1. पायथन में एक फ़ोल्डर से घर पर लौटने के लिए आवश्यक न्यूनतम छलांग खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास एक लॉग है जहां हमारे पास फ़ोल्डरों में प्रवेश करने का पथ है, तो अलग-अलग प्रतीक हो सकते हैं जैसे - ../ :वर्तमान फ़ोल्डर से मूल फ़ोल्डर में ले जाएँ। (यदि हम मुख्य फ़ोल्डर में हैं, तो स्थान न बदलें)। ./ :वर्तमान फ़ोल्डर में बने रहें। x/ :x नाम के चाइल्ड फोल्डर में ले जाए

  1. पायथन में सभी अच्छे कलाकारों को भुगतान करने के लिए आवश्यक न्यूनतम राशि खोजने का कार्यक्रम

    मान लीजिए हमने रेटिंग नामक संख्याओं की एक सूची दी है, और यह कोडर्स के प्रदर्शन स्कोर दिखा रहा है। अब प्रबंधक प्रत्येक कोडर को 1000 रुपये देना चाहता है, सिवाय इसके कि अगर दो कोडर आसन्न हैं, तो वे बेहतर प्रदर्शन करने वाले कोडर को खराब प्रदर्शन करने वाले से कम से कम 1000 रुपये अधिक देना चाहेंगे। हमें उ