जब डिवाइड एंड कंकर मेथड का उपयोग करके मैक्सिमम सबएरे प्रॉब्लम हल करना आवश्यक हो,
नीचे इसका प्रदर्शन दिया गया है:
उदाहरण
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' का उपयोग करके प्राप्त किया जाता है जो हर सबएरे के योग की गणना करने में मदद करता है।
मेथड के बाहर, एक सूची परिभाषित की गई है, और कंसोल पर प्रदर्शित की गई है।
सूची की लंबाई निर्धारित की गई है।
सबएरे के योग की गणना करने की मेथड को इस सूची को पास करके बुलाया जाता है।
योग आउटपुट के रूप में कंसोल पर प्रदर्शित होता है।