কম্পিউটার

Python-এ সংলগ্ন জোড়ার যোগফল নিখুঁত বর্গক্ষেত্রে স্থানান্তরের সংখ্যা গণনা করার জন্য প্রোগ্রাম


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

সুতরাং, ইনপুট যদি সংখ্যার মত হয় =[2, 9, 7], তাহলে আউটপুট হবে 2, যেমন আমাদের আছে [2, 7, 9] এবং [9, 7, 2]

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

  • res :=0

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

    লাগবে
  • যদি i + 1 সংখ্যার আকারের সমান হয়, তাহলে

    • res :=res + 1

    • ফেরত

  • পরিদর্শন করেছেন :=একটি নতুন খালি সেট

  • j রেঞ্জ i + 1 থেকে সংখ্যার আকারের জন্য, করুন

    • s :=সংখ্যা[i] + সংখ্যা[j]

    • যদি s পরিদর্শন না করা হয় এবং (s এর বর্গমূল)^2 s হয়, তাহলে

      • ভিজিট করা হিসাবে চিহ্নিত করুন

      • অদলবদল সংখ্যা[i + 1] এবং সংখ্যা [j]

      • util(i + 1)

      • অদলবদল সংখ্যা [i + 1] এবং সংখ্যা [j]

  • মূল পদ্ধতি থেকে নিম্নলিখিতগুলি করুন -

  • পরিদর্শন করেছেন :=একটি নতুন সেট

  • আমি 0 থেকে সংখ্যার আকারের মধ্যে, কর

    • অদলবদল সংখ্যা[i] এবং সংখ্যা[0]

    • যদি nums[0] পরিদর্শন না করা হয়, তাহলে

      • util(0)

    • পরিদর্শন হিসাবে সংখ্যাগুলি[0] চিহ্নিত করুন

    • অদলবদল সংখ্যা[i] এবং সংখ্যা[0]

  • রিটার্ন রিটার্ন

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

উদাহরণ

from math import sqrt
class Solution:
   def solve(self, nums):
      self.res = 0
      def util(i):
         if i + 1 == len(nums):
            self.res += 1
            return
         visited = set()
         for j in range(i + 1, len(nums)):
            s = nums[i] + nums[j]
            if s not in visited and int(sqrt(s)) ** 2 == s:
               visited.add(s)
               nums[i + 1], nums[j] = nums[j], nums[i + 1]
               util(i + 1)
               nums[i + 1], nums[j] = nums[j], nums[i + 1]
      visited = set()
      for i in range(len(nums)):
         nums[i], nums[0] = nums[0], nums[i]
         if nums[0] not in visited:
            util(0)
         visited.add(nums[0])
         nums[i], nums[0] = nums[0], nums[i]
      return self.res
ob = Solution()
nums = [2, 9, 7]
print(ob.solve(nums))

ইনপুট

[2, 9, 7]

আউটপুট

2

  1. পাথের সংখ্যা গণনা করার প্রোগ্রাম যার যোগফল পাইথনে k

  2. সর্বাধিক সংখ্যক স্বতন্ত্র জোড়া গণনা করার প্রোগ্রাম যার পার্থক্যগুলি পাইথনের লক্ষ্যের চেয়ে বড়

  3. সংখ্যার তালিকা থেকে বৈধ জোড়ার সংখ্যা গণনা করার প্রোগ্রাম, যেখানে পাইথনে জোড়ার যোগফল বিজোড়

  4. উপাদান সংখ্যা গণনা প্রোগ্রাম পাইথনে সঠিক অবস্থানে স্থাপন করা হয়