Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

क्रमपरिवर्तन की संख्या की गणना करने के लिए कार्यक्रम जहां आसन्न जोड़े का योग पायथन में पूर्ण वर्ग है

मान लीजिए हमारे पास संख्याओं की एक सूची है जिसे अंक कहा जाता है। हमें संख्याओं के क्रमपरिवर्तन की संख्या इस प्रकार ज्ञात करनी है कि आसन्न मानों के प्रत्येक युग्म का योग एक पूर्ण वर्ग हो। दो क्रमपरिवर्तन ए और बी अद्वितीय हैं जब कुछ इंडेक्स i होता है जहां ए [i] बी [i] के समान नहीं होता है।

इसलिए, यदि इनपुट nums =[2, 9, 7] जैसा है, तो आउटपुट 2 होगा, जैसा कि हमारे पास [2, 7, 9] और [9, 7, 2]

है।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • रेस :=0

  • उपयोग() फ़ंक्शन को परिभाषित करें। इसमें मुझे लगेगा

  • अगर i + 1 अंकों के आकार के समान है, तो

    • रेस :=रेस + 1

    • वापसी

  • विज़िट किया गया :=एक नया खाली सेट

  • j के लिए i + 1 से लेकर अंकों के आकार तक, करें

    • एस:=अंक [i] + अंक [जे]

    • यदि s का दौरा नहीं किया गया है और (s का वर्गमूल)^2 s है, तो

      • s को विज़िट किया गया के रूप में चिह्नित करें

      • स्वैप nums[i + 1] और nums[j]

      • उपयोग (i + 1)

      • स्वैप nums[i + 1] और nums[j]

  • मुख्य विधि से निम्न कार्य करें -

  • विज़िट किया गया :=एक नया सेट

  • मैं के लिए 0 से लेकर अंकों के आकार तक, करें

    • स्वैप nums[i] और nums[0]

    • अगर nums[0] का दौरा नहीं किया जाता है, तो

      • उपयोग (0)

    • अंक [0] देखे गए के रूप में चिह्नित करें

    • स्वैप nums[i] और nums[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 है

    मान लीजिए कि हमारे पास एक बाइनरी ट्री है और दूसरा मान k है, तो हमें उप-चाइल्ड पथों के लिए अद्वितीय नोड की संख्या ज्ञात करनी होगी, जो k के बराबर है। तो, अगर इनपुट पसंद है और k =5, तो आउटपुट 2 होगा, क्योंकि पथ [2, 3] और [1, 4] हैं। इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - गिनती :=एक मानच

  1. संख्याओं की सूची से मान्य जोड़े की संख्या गिनने का कार्यक्रम, जहां पायथन में जोड़ी योग विषम है

    मान लीजिए कि हमारे पास धनात्मक संख्याओं की एक सूची है, हमें सूचकांकों (i, j) के मान्य जोड़े की संख्या ज्ञात करनी है, जहाँ i

  1. तत्वों की संख्या गिनने का कार्यक्रम पायथन में सही स्थिति में रखा गया है

    मान लीजिए कि हमारे पास संख्याओं की एक सूची है जिसे अंक कहा जाता है, हमें उन तत्वों की संख्या का पता लगाना है जो सही सूचकांक में मौजूद हैं, जब सूची को क्रमबद्ध किया जाना था। इसलिए, यदि इनपुट [2, 8, 4, 5, 11] जैसा है, तो आउटपुट 2 होगा, क्योंकि तत्व 2 और 11 अपनी सही स्थिति में हैं। क्रमबद्ध क्रम [2, 4