मान लीजिए हमारे पास एक सरणी A है। हमें यह जांचना है कि क्या हम सरणी को दो भागों में विभाजित कर सकते हैं, जिनका योग बराबर है। मान लीजिए कि तत्व [6, 1, 3, 2, 5] हैं, तो [6, 1], और [2, 5] दो उप-सरणी हो सकते हैं।
इन नियमों का पालन करके इस समस्या को आसानी से हल किया जा सकता है। हमें पहले सरणी के सभी तत्वों का योग ज्ञात करना होगा, फिर सरणी के प्रत्येक तत्व के लिए, हम अब तक पाए गए तत्वों के कुल योग का उपयोग करके सही योग की गणना कर सकते हैं।
उदाहरण
#include<iostream> #include<numeric> using namespace std; void displaySubArray(int arr[], int left, int right) { cout << "[ "; for (int i = left; i <= right; i++) cout << arr[i] << " "; cout << "] "; } void subarrayOfSameSum(int arr[] , int n) { int total_sum = accumulate(arr, arr+n, 0); int so_far_sum = 0; for(int i = 0; i<n; i++){ if(2*so_far_sum+arr[i] == total_sum){ cout << "subarray 1: "; displaySubArray(arr, 0, i-1); cout << "\nsubarray 2: "; displaySubArray(arr, i+1, n-1); return; } so_far_sum += arr[i]; } cout << "No subarray can be formed"; } int main() { int arr[] = {6, 1, 3, 2, 5} ; int n = sizeof(arr)/sizeof(arr[0]); subarrayOfSameSum(arr, n); }
आउटपुट
subarray 1: [ 6 1 ] subarray 2: [ 2 5 ]