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