কম্পিউটার টিউটোরিয়াল

পাইথনে কার্যকর অধ্যয়ন পদ্ধতি নির্ণয়

deadlines, credits, durations ত্রি তালিকা দেওয়া আছে যা কোর্স অ্যাসাইনমেন্ট নির্দেশ করে। একটি অ্যাসাইনমেন্ট শেষ না হওয়া পর্যন্ত অন্য শুরু করা যায় না। দিন ০ থেকে শুরু করে সর্বোচ্চ ক্রেডিট উপার্জন করতে হবে।

উদাহরণ: deadlines=[7,5,10], credits=[8,7,10], durations=[5,4,10] হলে আউটপুট ১০।

সমাধানের ধাপসমূহ

  • jobs := (deadline, duration, credit) জোড়া সর্ট করুন
  • dp(i, day) ফাংশন সংজ্ঞায়িত করুন:
    • যদি i >= len(jobs) হয় তবে 0 ফেরত দিন
    • ans := dp(i+1, day)
    • যদি day + duration - 1 <= deadline হয় তবে ans := max(ans, dp(i+1, day+duration) + credit)
    • ans ফেরত দিন
  • 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. পাইথনে ম্যাট্রিক্স থেকে সব k×k সাবম্যাট্রিক্সের ন্যূনতম মান বের করা

  3. পাইথনে মুদ্রা আربیট্রেজ বা সুযোগ যাচাই

  4. পাইথন প্রোগ্রামে ম্যাট্রিক্সের ট্রান্সপোজ বের করা