কম্পিউটার

পাইথনে অধ্যয়নের কার্যকর উপায় খুঁজে বের করার প্রোগ্রাম


ধরুন, আমাদের তিনটি তালিকা আছে যার দৈর্ঘ্য একই। এই সময়সীমা, ক্রেডিট, এবং সময়কাল হয়. তারা কোর্স অ্যাসাইনমেন্ট প্রতিনিধিত্ব করা হয়. i−th অ্যাসাইনমেন্টের সময়সীমা[i] তার সময়সীমা দেখায়, ক্রেডিট[i] তার ক্রেডিট দেখায়, এবং সময়কাল [i] অ্যাসাইনমেন্ট শেষ করতে কত দিন লাগে তা দেখায়। একটি অ্যাসাইনমেন্ট অন্যটি শুরু করার আগে অবশ্যই সম্পূর্ণ করতে হবে। আমাদের মনে রাখতে হবে যে আমরা একটি অ্যাসাইনমেন্ট শেষ করতে পারি যেদিন এটি নির্ধারিত হবে এবং আমরা বর্তমানে 0 দিনের শুরুতে আছি৷

সুতরাং, যদি ইনপুট হয়, সময়সীমা =[7, 5, 10], ক্রেডিট =[8, 7, 10], সময়কাল =[5, 4, 10], তাহলে আউটপুট হবে 10।

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

  • চাকরি :=তালিকার জিপ সাজান (সময়সীমা, সময়কাল, ক্রেডিট)

  • একটি ফাংশন dp() সংজ্ঞায়িত করুন।

    • যদি i>=কাজের আকার হয়, তাহলে

    • রিটার্ন 0

  • উত্তর :=dp(i + 1, দিন)

  • সময়সীমা, সময়কাল, ক্রেডিট :=চাকরি[i]

  • যদি দিন + সময়কাল − 1 <=সময়সীমা, তাহলে

    • উত্তর :=সর্বাধিক উত্তর, dp(i + 1, দিন + সময়কাল) + ক্রেডিট

  • উত্তর ফেরত দিন

  • মূল পদ্ধতি থেকে dp(0, 0)

    রিটার্ন করুন

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

উদাহরণ

class Solution:
   def solve(self, deadlines, credits, durations):
      jobs = sorted(zip(deadlines, durations, credits))
      def dp(i=0, day=0):
         if i >= len(jobs):
            return 0
         ans = dp(i + 1, day)
         deadline, duration, credit = jobs[i]
         if day + duration − 1 <= deadline:
            ans = max(ans, dp(i + 1, day + duration) + credit)
      return ans
return dp()
ob = Solution()
deadlines = [7, 5, 10]
credits = [8, 7, 10]
durations = [5, 4, 10]
print(ob.solve(deadlines, credits, durations))

ইনপুট

[7, 5, 10], [8, 7, 10], [5, 4, 10]

আউটপুট

10

  1. পাইথনের প্রত্যেকের দ্বারা গ্রাফটি অতিক্রম করা যায় কিনা তা খুঁজে বের করার প্রোগ্রাম

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

  3. পাইথনে কারেন্সি আর্বিট্রেজ খুঁজে বের করার প্রোগ্রাম

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