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

पायथन प्रोग्राम: डिवाइड एंड कंकर का उपयोग करके मैक्सिमम सबएरे प्रॉब्लम हल करना


जब डिवाइड एंड कंकर मेथड का उपयोग करके मैक्सिमम सबएरे प्रॉब्लम हल करना आवश्यक हो,

नीचे इसका प्रदर्शन दिया गया है:

उदाहरण

def max_crossing_sum(my_array, low, mid, high):
    sum_elements = 0
    sum_left_elements = -10000
    for i in range(mid, low-1, -1):
        sum_elements = sum_elements + my_array[i]
        if (sum_elements > sum_left_elements):
            sum_left_elements = sum_elements
    sum_elements = 0
    sum_right_elements = -1000
    for i in range(mid + 1, high + 1):
        sum_elements = sum_elements + my_array[i]
        if (sum_elements > sum_right_elements):
            sum_right_elements = sum_elements
    return max(sum_left_elements + sum_right_elements, sum_left_elements, sum_right_elements)

def max_sub_array_sum(my_array, low, high):
    if (low == high):
        return my_array[low]
    mid = (low + high) // 2
    return max(max_sub_array_sum(my_array, low, mid), max_sub_array_sum(my_array, mid+1, high), max_crossing_sum(my_array, low, mid, high))

my_list = [23, 12, 45, 67, 89, 11]
list_length = len(my_list)
print("The list is :")
print(my_list)
max_sum = max_sub_array_sum(my_list, 0, list_length-1)
print("The maximum contiguous sum is ")
print(max_sum)

आउटपुट

The list is : [23, 12, 45, 67, 89, 11]
The maximum contiguous sum is 247

व्याख्या

  • 'max_crossing_sum' नामक एक मेथड परिभाषित किया गया है जो सूची के बाएं भाग के तत्वों का योग गणना करता है।

  • यह 'max_sub_array_sum' का उपयोग करके प्राप्त किया जाता है जो हर सबएरे के योग की गणना करने में मदद करता है।

  • मेथड के बाहर, एक सूची परिभाषित की गई है, और कंसोल पर प्रदर्शित की गई है।

  • सूची की लंबाई निर्धारित की गई है।

  • सबएरे के योग की गणना करने की मेथड को इस सूची को पास करके बुलाया जाता है।

  • योग आउटपुट के रूप में कंसोल पर प्रदर्शित होता है।


  1. Python से पोस्टऑर्डर ट्रैवर्सल से एक्सप्रेशन ट्री कैसे बनाएं और मूल्यांकन करें? Python से पोस्टऑर्डर ट्रैवर्सल से एक्सप्रेशन ट्री कैसे बनाएं और मूल्यांकन करें?

    पोस्टफिक्स एक्सप्रेशन से स्टैक-आधारित एल्गोरिदम से एक्सप्रेशन ट्री बनाएं और रिकर्सिवली मूल्यांकन करें। एल्गोरिदम buildTree(postfix): स्टैक में (नोड, साइड) टपल्स रखें। पोस्टफिक्स से पॉप करके ट्री बनाएं। evaluate(root): अगर नोड न्यूमेरिक तो वैल्यू रिटर्न। वरना लेफ्ट/राइट रिकर्सिवली मूल्यांकन करके ऑपर

  1. - Python से अधिकतम कॉइन्स कैसे प्राप्त करें (3-प्लेयर गेम)?

    3n पाइल्स में से प्रत्येक टर्न में 3 पाइल्स चुनें: प्लेयर2 मैक्स लेता है, प्लेयर1 सेकंड मैक्स, प्लेयर3 मिन। प्लेयर1 के मैक्स कॉइन्स ढूंढें। एल्गोरिदम पाइल्स को सॉर्ट करें। जब तक पाइल्स खाली नहीं: सेकंड लास्ट एलिमेंट (प्लेयर1 का पिक) आंसर में जोड़ें। सेकंड लास्ट, लास्ट, और फर्स्ट एलिमेंट डिलीट करें

  1. पायथन का उपयोग करके अधिकतम संभावना वाले पथ को खोजने का प्रोग्राम पायथन का उपयोग करके अधिकतम संभावना वाले पथ को खोजने का प्रोग्राम

    मान लीजिए हमारे पास n नोड्स वाला एक अनिर्देशित भारित ग्राफ है (नोड्स 0 से क्रमांकित हैं)। यह ग्राफ एज लिस्ट के रूप में दिया गया है, प्रत्येक एज e के लिए, उस एज को पार करने की सफलता की संभावना probability[e] है। हमारे पास प्रारंभ और अंत नोड्स भी हैं, हमें प्रारंभ से अंत तक जाने के लिए अधिकतम सफलता स