এই টিউটোরিয়ালে, আমরা একটি প্রোগ্রাম নিয়ে আলোচনা করব যাতে সর্বাধিক যোগফল সাব্যারে খুঁজে পাওয়া যায় যেমন শুরু এবং শেষের মান একই।
এর জন্য আমাদেরকে পূর্ণসংখ্যা সম্বলিত একটি অ্যারে দেওয়া হবে। আমাদের কাজ হল সর্বাধিক যোগফল সহ সাব্যারে খুঁজে বের করা যাতে উপাদানগুলি এর উভয় প্রান্ত সমান হয়৷
উদাহরণ
#include <bits/stdc++.h> using namespace std; //finding the maximum sum int maxValue(int a[], int n) { unordered_map<int, int> first, last; int pr[n]; pr[0] = a[0]; for (int i = 1; i < n; i++) { pr[i] = pr[i - 1] + a[i]; if (first[a[i]] == 0) first[a[i]] = i; last[a[i]] = i; } int ans = 0; for (int i = 0; i < n; i++) { int start = first[a[i]]; int end = last[a[i]]; ans = max(ans, pr[end] - pr[start - 1]); } return ans; } int main() { int arr[] = { 1, 3, 5, 2, 4, 18, 2, 3 }; int n = sizeof(arr) / sizeof(arr[0]); cout << maxValue(arr, n); return 0; }
আউটপুট
37