কম্পিউটার

পাইথনে তালিকার উপাদানগুলিকে সমান করার জন্য সর্বনিম্ন মোট খরচ খুঁজে বের করার প্রোগ্রাম


ধরুন আমাদের কাছে সংখ্যা এবং খরচ নামে দুটি সংখ্যার তালিকা রয়েছে। এখন বিবেচনা করুন, একটি অপারেশন আছে যেখানে আমরা খরচ খরচের জন্য সংখ্যা[i] বাড়াতে বা কমাতে পারি। আমরা এই অপারেশনগুলির যেকোন সংখ্যক সঞ্চালন করতে পারি, এবং আমরা সংখ্যায় সমস্ত উপাদান সমান করতে চাই। আমাদের প্রয়োজন সর্বনিম্ন মোট খরচ খুঁজে বের করতে হবে।

সুতরাং, যদি ইনপুটটি সংখ্যার মত হয় =[3, 2, 4] খরচ =[1, 10, 2], তাহলে আউটপুট হবে 5, যেমন আমরা 1-এর খরচের জন্য 3 নম্বরটিকে 2-তে কমাতে পারি। তারপর আমরা প্রতিটি 2 খরচের জন্য 4টি দুইবার কমাতে পারি।

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

  • একটি ফাংশন হেল্পার() সংজ্ঞায়িত করুন। এটি লক্ষ্য গ্রহণ করবে

  • মোট :=0

  • প্রতিটি i,n enumerate(nums) এর জন্য করুন

    • যদি লক্ষ্য n এর মত না হয়, তাহলে

      • মোট :=মোট + |n-লক্ষ্য| * খরচ[i]

  • মোট রিটার্ন

  • প্রধান পদ্ধতি থেকে, নিম্নলিখিতগুলি করুন:

  • কম :=0, উচ্চ :=সংখ্যার সর্বাধিক

  • যখন কম <উচ্চ অ-শূন্য, করুন

    • মধ্য :=(নিম্ন + উচ্চ) / 2

    • যদি helper(mid)

      • উচ্চ :=মধ্য

    • অন্যথায়,

      • নিম্ন :=মধ্য + 1

  • রিটার্ন হেল্পার(নিম্ন)

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

উদাহরণ

class Solution:
   def solve(self, nums, costs):
      def helper(target):
         total = 0
         for i,n in enumerate(nums):
            if target != n:
               total += abs(n-target) * costs[i]
         return total
      low,high = 0, max(nums)
      while low < high:
         mid = low + high >> 1
         if helper(mid) < helper (mid+1):
            high = mid
         else:
            low = mid + 1
      return helper(low)
ob = Solution()
nums = [3, 2, 4]
costs = [1, 10, 2]
print(ob.solve(nums, costs))

ইনপুট

[3, 2, 4], [1, 10, 2]

আউটপুট

5

  1. পাইথনে একটি লাঠি কাটতে ন্যূনতম খরচ খুঁজে বের করার প্রোগ্রাম

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

  3. পাইথনে সমস্ত চালান সম্পূর্ণ করার জন্য মোট খরচ খোঁজার প্রোগ্রাম

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