কম্পিউটার

পাইথনের ক্ষমতার মধ্যে বিভিন্ন আইটেম গ্রহণ করে আমরা সর্বাধিক পরিমাণ খুঁজে পেতে প্রোগ্রামটি পেতে পারি


ধরুন আমাদের কাছে ওজন এবং মান নামে দুটি তালিকা রয়েছে যা একই দৈর্ঘ্যের এবং আরেকটি সংখ্যাকে বলা হয় ক্ষমতা k। এখানে ওজন[i] এবং মান [i] ith আইটেমের ওজন এবং মান দেখায়। এখন, আমরা সর্বাধিক k ধারণক্ষমতার ওজন নিতে পারি, এবং আমরা প্রতিটি আইটেমের সর্বাধিক একটি কপি নিতে পারি, আমাদের সর্বোচ্চ পরিমাণ মূল্য পেতে হবে।

সুতরাং, যদি ইনপুট হয় ওজন =[2, 3, 4], মান =[2, 6, 4], ক্ষমতা =6, তাহলে আউটপুট হবে 8

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • n:=ওজনের আকার
  • dp:=আকার ক্ষমতা x n এর একটি ম্যাট্রিক্স, এবং 0 দিয়ে পূরণ করুন
  • আমি 0 থেকে n রেঞ্জের জন্য, কর
      0 থেকে ধারণক্ষমতার মধ্যে j-এর জন্য,
        করুন
      • যদি i 0 এর মত হয় বা j 0 এর মত হয়, তাহলে
        • dp[i, j]:=0
      • অন্যথায় যখন ওজন করা হয়[i-1] <=j, তারপর
        • dp[i,j] =সর্বাধিক (dp[i-1, j-ওজন[i - 1]] + মান[i-1]) এবং (dp[i-1, j])
      • অন্যথায়,
        • dp[i, j]:=dp[i-1, j]
  • রিটার্ন ডিপি[এন, ক্যাপাসিটি]

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

উদাহরণ

class Solution:
   def solve(self, weights, values, capacity):
      n=len(weights)
      dp=[[0 for i in range(capacity+1)]
      for _ in range(n+1)]
         for i in range(n+1):
            for j in range(capacity+1):
               if i==0 or j==0:
                  dp[i][j]=0
                  elif weights[i-1]<=j:
                     dp[i][j]=max(dp[i-1][j-weights[i-1]]+values[i-1],dp[i-1][j])
                  else:
                     dp[i][j]=dp[i-1][j]
      return dp[n][capacity]
ob = Solution() weights = [2, 3, 4] values = [2, 6, 4]
capacity = 6
print(ob.solve(weights, values, capacity))

ইনপুট

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

আউটপুট

8

  1. পাইথনে একাধিকবার স্টক মার্কেটে কেনার মাধ্যমে আমরা সর্বাধিক লাভ পেতে পারি তা খুঁজে বের করার প্রোগ্রাম

  2. পাইথনে একবার স্টক মার্কেটে কেনার মাধ্যমে আমরা সর্বাধিক লাভ পেতে পারি তা খুঁজে বের করার প্রোগ্রাম

  3. একটি অভিধানে সমস্ত আইটেমের যোগফল খুঁজে পেতে পাইথন প্রোগ্রাম

  4. পাইথন প্রোগ্রাম সর্বোচ্চ তিনটি সংখ্যা খুঁজে বের করতে