কম্পিউটার

পাইথনে সমস্ত 1গুলিকে একসাথে গোষ্ঠীভুক্ত করার জন্য প্রয়োজনীয় ন্যূনতম অদলবদল খুঁজে বের করার জন্য প্রোগ্রাম


ধরুন আমাদের একটি বাইনারি স্ট্রিং আছে, আমাদের স্ট্রিং-এর যেকোনো জায়গায় সব 1-কে একত্রে গোষ্ঠীভুক্ত করার জন্য প্রয়োজনীয় ন্যূনতম সংখ্যক সোয়াপ খুঁজে বের করতে হবে। সুতরাং ইনপুট যদি "10101001101" এর মত হয়, তাহলে আউটপুট হবে 3, কারণ সম্ভাব্য সমাধান হল "00000111111"।

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

  • ডেটা :=প্রদত্ত স্ট্রিং থেকে বিটগুলির একটি তালিকা

  • একটি সেট করুন :=0, n:=ডেটা অ্যারের দৈর্ঘ্য

  • n আকারের একটি অ্যারের যোগফল তৈরি করুন এবং এটি 0 দিয়ে পূরণ করুন, যোগফল [0] সেট করুন :=ডেটা[0]

  • এক :=এক + ডেটা[0]

  • 1 থেকে n – 1

    রেঞ্জের জন্য i
    • summ[i] :=summ[i - 1] + data[i]

    • one :=one + data[i]

  • উত্তর :=এক

  • বাম :=0, ডানে :=এক – ১

  • ডানদিকে

    • বাম যদি 0 হয়, তাহলে temp :=summ[right], অন্যথা temp :=summ[right] –

    • সমষ্টি[বাম - 1]
    • উত্তর :=সর্বনিম্ন উত্তর, এক – টেম্প

    • ডান এবং বাম 1 দ্বারা বাড়ান

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

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

উদাহরণ

class Solution(object):
   def solve(self, data):
      data = list(map(int, list(data)))
      one = 0
      n = len(data)
      summ=[0 for i in range(n)]
      summ[0] = data[0]
      one += data[0]
      for i in range(1,n):
         summ[i] += summ[i-1]+data[i]
         one += data[i]
      ans = one
      left = 0
      right = one-1
      while right <n:
         if left == 0:
            temp = summ[right]
         else:
            temp = summ[right] - summ[left-1]
         ans = min(ans,one-temp)
         right+=1
         left+=1
         return ans
ob = Solution()
print(ob.solve("10101001101"))

ইনপুট

"10101001101"

আউটপুট

3

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

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

  3. পাইথন ব্যবহার করে একটি বাইনারি গ্রিড সাজানোর জন্য সর্বনিম্ন অদলবদল খুঁজে বের করার প্রোগ্রাম

  4. পাইথনে ন্যূনতম অদলবদল করা সমস্ত 1-এর একসাথে গ্রুপ করা