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

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


मान लीजिए हमारे पास nums नामक संख्याओं की एक सूची है। हमें nums के उन क्रमचयों की संख्या ज्ञात करनी है जहां आसन्न मानों के प्रत्येक जोड़ का योग एक पूर्ण वर्ग है। दो क्रमचय A और B अद्वितीय हैं जब कोई इंडेक्स i ऐसा हो जहां A[i], B[i] के समान नहीं है।

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

हल करने के चरण

  • res := 0

  • util() फ़ंक्शन परिभाषित करें। यह i लेगा

    • यदि i + 1, nums के आकार के समान है, तो res := res + 1 और लौटें

    • visited := एक नया खाली सेट

    • j के लिए i + 1 से nums के आकार तक की रेंज में, करें

      • s := nums[i] + nums[j]

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

        • s को visited के रूप में चिह्नित करें

        • nums[i + 1] और nums[j] को स्वैप करें

        • util(i + 1)

        • nums[i + 1] और nums[j] को स्वैप करें

  • मुख्य विधि से निम्नलिखित करें:

    • visited := एक नया सेट

    • i के लिए 0 से nums के आकार तक की रेंज में, करें

      • nums[i] और nums[0] को स्वैप करें

      • यदि nums[0], visited में नहीं है, तो util(0)

      • nums[0] को visited के रूप में चिह्नित करें

      • nums[i] और nums[0] को स्वैप करें

    • res लौटाएं

    उदाहरण

    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 के बराबर है। उदाहरण के लिए, यदि इनपुट इस तरह है: और k = 5, तो आउटपुट 2 होगा, क्योंकि पथ हैं [2, 3] और [1, 4]। इसे हल करने के लिए, हम निम्न चरणों का पालन करेंगे: count := एक मैप

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

    मान लीजिए हमारे पास धनात्मक संख्याओं की एक सूची nums है, हमें वैध सूचकांक जोड़े (i, j) की संख्या ढूंढनी है, जहां i < j, और nums[i] + nums[j] एक विषम संख्या है। उदाहरण के लिए, यदि इनपुट [5, 4, 6] है, तो आउटपुट 2 होगा, क्योंकि दो जोड़े [5,4] और [5,6] हैं, जिनका योग विषम है। इसे हल करने के लिए हम निम्

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

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