इस ट्यूटोरियल में, हम एक प्रोग्राम के बारे में चर्चा करेंगे जो एक ऐरे के दो सबसेट के अधिकतम संभव अंतर को खोजने के लिए है
इसके लिए हमें एक सरणी प्रदान की जाएगी जिसमें कुछ यादृच्छिक पूर्णांकों के एक या दो उदाहरण होंगे। हमारा काम उस सरणी के दो उपसमुच्चय बनाना है जैसे कि उनके योग का अंतर अधिकतम हो और किसी भी उपसमुच्चय में दोहराव वाली संख्या न हो।
उदाहरण
#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