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