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

पायथन में दिए गए ऐरे से अधिकतम nCr मान वाला युग्म खोजें


मान लीजिए हमारे पास n पूर्णांकों का एक ऐरे arr है। हमें ऐरे से arr[i] और arr[j] ढूंढने हैं जैसे कि arr[i]Carr[j] यथासंभव बड़ा हो। यदि एक से अधिक युग्म हैं, तो उनमें से कोई भी एक लौटाएं।

इसलिए, यदि इनपुट [4, 1, 2] है, तो आउटपुट 4 2 होगा क्योंकि 4C1 = 4, 4C2 = 6 और 2C1 = 2, इसलिए (4,2) ही एकमात्र इच्छित युग्म है।

समाधान दृष्टिकोण

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

  • सूची v को सॉर्ट करें।
  • N := v[n - 1] (सबसे बड़ा तत्व)।
  • यदि N % 2 == 1 (विषम), तो:
    • first := N // 2
    • second := first + 1
    • left := -1, right := -1, temp := -1
    • i को 0 से n-1 तक के लिए:
      • यदि v[i] > first, तो temp := i और ब्रेक करें।
      • अन्यथा, difference := first - v[i]; यदि difference < res1, तो res1 := difference, left := v[i]
    • right := v[temp]
    • difference1 := first - left, difference2 := right - second
    • यदि difference1 < difference2, तो (N, left) प्रिंट करें।
    • अन्यथा, (N, right) प्रिंट करें।
  • अन्यथा (सम):
    • max := N // 2
    • res := 3 * 10¹⁸, R := -1
    • i को 0 से n-2 तक के लिए:
      • difference := |v[i] - max|
      • यदि difference < res, तो res := difference, R := v[i]
    • (N, R) प्रिंट करें।

उदाहरण

बेहतर समझ के लिए निम्न कार्यान्वयन देखें:

def findMatrixPair(v, n):
    v.sort()
    N = v[n - 1]
    if N % 2 == 1:
        first = N // 2
        second = first + 1
        res1, res2 = 3 * (10 ** 18), 3 * (10 ** 18)
        left, right = -1, -1
        temp = -1
        for i in range(0, n):
            if v[i] > first:
                temp = i
                break
            else:
                difference = first - v[i]
                if difference < res1:
                    res1 = difference
                    left = v[i]
        right = v[temp]
        difference1 = first - left
        difference2 = right - second
        if difference1 < difference2:
            print(N, left)
        else:
            print(N, right)
    else:
        max_val = N // 2
        res = 3 * (10 ** 18)
        R = -1
        for i in range(0, n - 1):
            difference = abs(v[i] - max_val)
            if difference < res:
                res = difference
                R = v[i]
        print(N, R)

v = [4, 1, 2]
n = len(v)
findMatrixPair(v, n)

इनपुट

[4,1,2], 3

आउटपुट

4 2
  1. - C++ में दिए गए सरणी से एक युग्म खोजें जिसका nCr मान अधिकतम हो

    अवधारणा दिए गए n धनात्मक पूर्णांकों की सरणी arr[] के संबंध में, सरणी से तत्व arr[i] और arr[j] निर्धारित करना है जैसे कि arr[i]Carr[j] अधिकतम संभव हो। एक से अधिक वैध युग्म होने पर, उनमें से किसी एक को प्रिंट करें। उदाहरण इनपुट arr[] = {4, 1, 2} आउटपुट 4 2 4C1 = 4, 4C2 = 6, 2C1 = 2 (4, 2) अधिकतम nCr

  1. - C++ में दिए गए वस्तुओं की सरणी से अधिकतम ऊंचाई का पिरामिड ज्ञात करें

    मान लीजिए हमारे पास n वस्तुओं की एक सरणी है। प्रत्येक वस्तु की चौड़ाई W[i] है। हमें उन्हें पिरामिड के तरीके में व्यवस्थित करना है जैसे - i-वें स्तर की कुल चौड़ाई (i+1)-वें स्तर से कम हो i-वें स्तर में वस्तुओं की कुल संख्या (i+1)-वें स्तर से कम हो उदाहरण के लिए, यदि चौड़ाई [40, 100, 20, 30] है, तो

  1. पायथन में दिए गए सरणी के किसी भी अनुक्रम का अधिकतम आकार खोजने का प्रोग्राम जहां हर जोड़ी अच्छी है पायथन में दिए गए सरणी के किसी भी अनुक्रम का अधिकतम आकार खोजने का प्रोग्राम जहां हर जोड़ी अच्छी है

    मान लीजिए हमारे पास आकार n का एक अनुक्रम nums है। हमें nums के उस सबसीक्वेंस का अधिकतम आकार खोजना है जिसमें हर जोड़ी (p, q) एक अच्छी जोड़ी है? एक जोड़ी को अच्छी जोड़ी कहा जाता है यदि और केवल यदि यह इनमें से कम से कम एक शर्त को पूरा करती है: 1. p के विशिष्ट अभाज्य भाजकों की संख्या की समता q के समान ह