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

Python में एक समीकरण का अधिकतम मान खोजने का प्रोग्राम


मान लीजिए हमारे पास एक ऐरे points है जिसमें 2D प्लेन पर कोऑर्डिनेट पॉइंट्स हैं, वे x-मानों द्वारा सॉर्टेड हैं, जहां points[i] = (x_i, y_i) ताकि सभी 1 <= i < j <= points की संख्या के लिए x_i < x_j। हमारे पास एक और मान k है। हमें समीकरण y_i + y_j + |x_i - x_j| का अधिकतम मान ढूंढना है जहां |x_i - x_j| <= k और 1 <= i < j <= points की संख्या।

उदाहरण के लिए, यदि इनपुट है points = [[2,4],[3,1],[6,11],[7,-9]], k = 1, तो आउटपुट 6 होगा क्योंकि पहले दो पॉइंट्स शर्त |xi - xj| <= 1 को संतुष्ट करते हैं, अब यदि हम समीकरण की गणना करें तो हमें 4 + 1 + |2 - 3| = 6 मिलता है। तीसरे और चौथे पॉइंट्स भी शर्त को संतुष्ट करते हैं और 11 + -9 + |6 - 7| = 3 मान देते हैं, इसलिए अधिकतम 6 है।

समाधान के चरण

  1. left := 0, right := 1
  2. max_value := -inf
  3. while right < len(points):
    • (xl, yl) := points[left]
    • (xr, yr) := points[right]
    • diff := |xr - xl|
    • यदि left == right, तो right := right + 1
    • अन्यथा जब diff <= k:
      • m := yl + yr + diff
      • max_value := max(max_value, m)
      • यदि yl >= yr - diff, तो right := right + 1
      • अन्यथा, left := left + 1
    • अन्यथा, left := left + 1
  4. max_value वापस करें

उदाहरण

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

def solve(points, k):
    left, right = 0, 1
    max_value = float('-inf')
    while right < len(points):
        xl, yl = points[left]
        xr, yr = points[right]
        diff = abs(xr - xl)
        if left == right:
            right += 1
        elif diff <= k:
            m = yl + yr + diff
            max_value = max(max_value, m)
            if yl >= yr - diff:
                right += 1
            else:
                left += 1
        else:
            left += 1
    return max_value

points = [[2,4],[3,1],[6,11],[7,-9]]
k = 1
print(solve(points, k))

इनपुट

[[2,4],[3,1],[6,11],[7,-9]], 1

आउटपुट

6
  1. पायथन में बहुभुज का परिमाप खोजने का प्रोग्राम पायथन में बहुभुज का परिमाप खोजने का प्रोग्राम

    मान लीजिए हमारे पास एक 2D तल पर एक साधारण बहुभुज के अंतिम बिंदुओं को दर्शाने वाले क्रमबद्ध बिंदुओं की सूची है। हमें इस बहुभुज का परिमाप ढूंढना है।उदाहरण के लिए, यदि इनपुट points = [(0, 0), (0,5), (3, 5), (3,0)] है, तो आउटपुट 16 होगा क्योंकिदो भुजाएं लंबाई 3 की हैं और दो भुजाएं लंबाई 5 की हैं, तो 2*5

  1. Python में निर्देशित ग्राफ में सबसे बड़ा रंग मान ज्ञात करें Python में निर्देशित ग्राफ में सबसे बड़ा रंग मान ज्ञात करें

    एक निर्देशित ग्राफ दिया गया है जिसमें n रंगीन नोड्स और m एज हैं। प्रत्येक नोड का एक रंग (लोअरकेस अक्षर) है। एक वैध पथ नोड्स का अनुक्रम है जहां प्रत्येक नोड से अगले में निर्देशित एज है। पथ का रंग उस पथ में सबसे अधिक बार आने वाला नोड रंग है। सबसे बड़े रंग मान वाले वैध पथ को खोजें। यदि ग्राफ में साइकिल

  1. पायथन प्रोग्राम: ऐरे में सबसे बड़ा एलिमेंट ढूंढें पायथन प्रोग्राम: ऐरे में सबसे बड़ा एलिमेंट ढूंढें

    इस लेख में, हम दिए गए प्रॉब्लम स्टेटमेंट को हल करने के समाधान और दृष्टिकोण के बारे में सीखेंगे। प्रॉब्लम स्टेटमेंट इनपुट के रूप में एक ऐरे दिए जाने पर, हमें ऐरे में सबसे बड़ा एलिमेंट ढूंढने की आवश्यकता है। दृष्टिकोण हम max को पहले एलिमेंट के रूप में इनिशियलाइज़ करते हैं। इसके बाद, हम दिए गए ऐरे