ধরুন আমাদের একটি অ্যারে রয়েছে, এতে n উপাদান রয়েছে। আমাদের কাজ হল অ্যারে A কে দুটি সাববরেতে ভাগ করা, যাতে প্রতিটি সাবয়ারের যোগফল একই হবে। ধরুন অ্যারে A =[2, 3, 4, 1, 4, 5], আউটপুট 1, তাই 1 এর আগে এবং 1 এর পরে সাবয়ারে নেওয়া হয়। [২, ৩, ৪], এবং [৪, ৫]।
এই সমস্যাটি সমাধান করার জন্য, আমরা right_sum-এর প্রথম উপাদান ব্যতীত পুরো অ্যারেটি গণনা করব। বিবেচনা করুন যে পার্টিশন উপাদান. আমরা বাম থেকে ডানে যাবো। ডান_সমষ্টি থেকে একটি উপাদান বিয়োগ করে বাম_সমষ্টিতে একটি উপাদান যোগ করে, আমরা বিন্দুটি ধরি যখন right_sum =left_sum।
উদাহরণ
#include<iostream>
using namespace std;
int getPartitionElement(int arr[], int size) {
int right = 0, left = 0;
for (int i = 1; i < size; i++)
right += arr[i];
for (int i = 0, j = 1; j < size; i++, j++) {
right -= arr[j];
left += arr[i];
if (left == right)
return arr[i + 1];
}
return -1;
}
int main() {
int arr[] = { 2, 3, 4, 1, 4, 5 };
int size = sizeof(arr) / sizeof(arr[0]);
cout << "Partition element: " << getPartitionElement(arr, size);
} আউটপুট
Partition element: 1