কম্পিউটার টিউটোরিয়াল

পাইথন প্রোগ্রাম: ডিভাইড এন্ড কনকর (Divide and Conquer) ব্যবহার করে ম্যাক্সিমাম সাবঅ্যারে প্রাব্লেম সমাধান

যখন ডিভাইড এন্ড কনকর মেথড ব্যবহার করে ম্যাক্সিমাম সাবঅ্যারে প্রাব্লেম সমাধান করতে হয়,

নিচে এর демонস্ট্রেশন দেওয়া হলো:

উদাহরণ

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 দিয়ে এক্সপ্রেশন ট্রি বানানো এবং ইভ্যালুয়েট করার প্রোগ্রাম

  2. Python দিয়ে সর্বোচ্চ কয়েন পাওয়ার প্রোগ্রাম

  3. পাইথন ব্যবহার করে সর্বোচ্চ সম্ভাবনার পথ খুঁজে বের করার প্রোগ্রাম

  4. পাইথনে লিস্টে সর্বোচ্চ ও ন্যূনতম উপাদানের পজিশন বের করার প্রোগ্রাম