जब कडाने के एल्गोरिदम का उपयोग करके अधिकतम उप सरणी को खोजने की आवश्यकता होती है, तो एक विधि परिभाषित की जाती है जो अधिकतम उप सरणी को खोजने में मदद करती है। अधिकतम उप सरणी का ट्रैक रखने के लिए इटरेटर का उपयोग किया जाता है।
नीचे उसी का प्रदर्शन है -
उदाहरण
def find_max_sub_array(my_list, beg, end): max_end_at_i = max_seen_till_now = my_list[beg] max_left_at_i = max_left_till_now = beg max_right_till_now = beg + 1 for i in range(beg + 1, end): if max_end_at_i > 0: max_end_at_i += my_list[i] else: max_end_at_i = my_list[i] max_left_at_i = i if max_end_at_i > max_seen_till_now: max_seen_till_now = max_end_at_i max_left_till_now = max_left_at_i max_right_till_now = i + 1 return max_left_till_now, max_right_till_now, max_seen_till_now my_list = input('Enter the list of numbers... ') my_list = my_list.split() my_list = [int(x) for x in my_list] beg, end, max_val = find_max_sub_array(my_list, 0, len(my_list)) print('The maximum subarray begins at index {}, ends at index {}' ' and its sum is {}.'.format(beg, end - 1, max_val))है
आउटपुट
Enter the list of numbers... 2 5 7 12 6 8 The maximum subarray begins at index 0, ends at index 5 and its sum is 40.
स्पष्टीकरण
-
'find_max_sub_array' नाम की एक विधि परिभाषित की गई है जो तीन पैरामीटर लेती है।
-
किसी दी गई सीमा के भीतर अधिकतम उप सरणी पाई जाती है।
-
यह एक टपल लौटाता है जहां अधिकतम उप सरणी के बाएँ, दाएँ सूचकांकों को इसके योग के साथ लौटाया जाता है।
-
एक लूप का उपयोग इंडेक्स i पर समाप्त होने वाले अधिकतम सब एरे पर चेक रखने के लिए किया जाता है।
-
यह सभी उप सरणियों में से अधिकतम है।
-
यह विधि अब तक देखे गए उप सरणी के अधिकतम योग का भी ट्रैक रखती है, क्योंकि लूप बाएँ और दाएँ सूचकांकों के माध्यम से पुनरावृत्त होता है।
-
विधि के बाहर, संख्याओं की सूची को उपयोगकर्ता द्वारा इनपुट के रूप में लिया जाता है।
-
इसे विधि के पैरामीटर के रूप में पास किया जाता है।
-
यह कंसोल पर आउटपुट के रूप में प्रदर्शित होता है।