এই টিউটোরিয়ালে, আমরা একটি অ্যারের দুটি উপসেটের সর্বাধিক সম্ভাব্য পার্থক্য খুঁজে বের করার জন্য একটি প্রোগ্রাম নিয়ে আলোচনা করব
এর জন্য আমাদেরকে কয়েকটি এলোমেলো পূর্ণসংখ্যার এক বা দুটি উদাহরণ সম্বলিত একটি অ্যারে সরবরাহ করা হবে। আমাদের কাজ হল সেই অ্যারের দুটি উপসেট তৈরি করা যাতে তাদের যোগফলের পার্থক্য সর্বাধিক হয় এবং কোনো উপসেটে পুনরাবৃত্তিমূলক সংখ্যা থাকে না।
উদাহরণ
#include <bits/stdc++.h>
using namespace std;
//finding maximum subset difference
int maxDiff(int arr[], int n) {
int SubsetSum_1 = 0, SubsetSum_2 = 0;
for (int i = 0; i <= n - 1; i++) {
bool isSingleOccurance = true;
for (int j = i + 1; j <= n - 1; j++) {
if (arr[i] == arr[j]) {
isSingleOccurance = false;
arr[i] = arr[j] = 0;
break;
}
}
if (isSingleOccurance) {
if (arr[i] > 0)
SubsetSum_1 += arr[i];
else
SubsetSum_2 += arr[i];
}
}
return abs(SubsetSum_1 - SubsetSum_2);
}
int main() {
int arr[] = { 4, 2, -3, 3, -2, -2, 8 };
int n = sizeof(arr) / sizeof(arr[0]);
cout << "Maximum Difference = " << maxDiff(arr, n);
return 0;
} আউটপুট
Maximum Difference = 20