কম্পিউটার

পাইথনে সমস্ত কাজ সম্পূর্ণ করার জন্য ন্যূনতম সময় বের করার জন্য প্রোগ্রাম


ধরুন আমাদের কাছে সংখ্যা নামক সংখ্যার একটি তালিকা রয়েছে যেখানে প্রতিটি মান একটি কাজ শেষ করতে সময়ের একক নির্ধারণ করছে। আমরা যেকোন অ-পরপর টাস্ক এড়িয়ে যেতে পারি, আমাদের সব কাজ শেষ করতে ন্যূনতম সময় বের করতে হবে।

সুতরাং, যদি ইনপুটটি nums =[11, 6, 8, 16] এর মত হয়, তাহলে আউটপুট হবে 14, কারণ আমরা প্রথম এবং শেষ কাজগুলি এড়িয়ে যেতে পারি।

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

  • n :=সংখ্যার আকার
  • টেবিল :=একটি n x 2 ম্যাট্রিক্স তৈরি করুন এবং এটি 0 দিয়ে পূরণ করুন
  • টেবিল[0, 0] :=0
  • টেবিল[0, 1] :=সংখ্যা[0]
  • 1 থেকে n - 1 রেঞ্জের জন্য, করুন
    • টেবিল[i, 0] :=টেবিল[i - 1, 1]
    • টেবিল[i, 1] =(সর্বনিম্ন টেবিল[i - 1, 0] এবং টেবিল[i - 1][1]) + সংখ্যা[i]
  • সারণী সারির সর্বনিম্ন রিটার্ন [n - 1]

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

উদাহরণ

class Solution:
   def solve(self, nums):
      n = len(nums)
      table = [[0] * 2 for _ in range(n)]

      table[0][0] = 0
      table[0][1] = nums[0]

      for i in range(1, n):
         table[i][0] = table[i - 1][1]
         table[i][1] = min(table[i - 1][0], table[i - 1][1]) + nums[i]

      return min(table[n - 1])

ob = Solution()
nums = [11, 6, 8, 16]
print(ob.solve(nums))

ইনপুট

[11, 6, 8, 16]

আউটপুট

14

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

  2. পাইথন ব্যবহার করে সমস্ত নোডে পৌঁছানোর জন্য ন্যূনতম সংখ্যক শীর্ষবিন্দু খুঁজে বের করার প্রোগ্রাম

  3. পাইথনে সমস্ত ভাল পারফর্মারদের ন্যূনতম পরিমাণ অর্থ প্রদানের প্রয়োজন খুঁজে বের করার জন্য প্রোগ্রাম

  4. পাইথনে প্রদত্ত সীমাবদ্ধতার সাথে সমস্ত কাজ শেষ করার জন্য সর্বনিম্ন সময় খুঁজুন