Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

C++ में किसी सरणी के दो सबसेट का अधिकतम संभव अंतर

इस ट्यूटोरियल में, हम एक प्रोग्राम के बारे में चर्चा करेंगे जो एक ऐरे के दो सबसेट के अधिकतम संभव अंतर को खोजने के लिए है

इसके लिए हमें एक सरणी प्रदान की जाएगी जिसमें कुछ यादृच्छिक पूर्णांकों के एक या दो उदाहरण होंगे। हमारा काम उस सरणी के दो उपसमुच्चय बनाना है जैसे कि उनके योग का अंतर अधिकतम हो और किसी भी उपसमुच्चय में दोहराव वाली संख्या न हो।

उदाहरण

#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

  1. सी ++ में एक सरणी में अधिकतम संतुलन योग

    समस्या कथन एक सरणी को देखते हुए []। उपसर्ग योग का अधिकतम मान ज्ञात करें जो कि गिरफ्तारी में अनुक्रमणिका i के लिए प्रत्यय योग भी है []। उदाहरण यदि इनपुट ऐरे है - Arr[] ={1, 2, 3, 5, 3, 2, 1} तो आउटपुट 11 है - उपसर्ग योग =गिरफ्तारी[0..3] =1 + 2 + 3 + 5 =11 और प्रत्यय योग =गिरफ्तारी[3..6] =5 + 3 +

  1. C++ में क्रम को समान रखते हुए दो दिए गए सरणियों से अधिकतम सरणी

    समस्या कथन दो समान आकार की सरणियाँ A [] और B [] दी गई हैं। कार्य समान आकार की तीसरी सरणी बनाना है। परिणाम सरणी में दोनों सरणी से अधिकतम n तत्व होने चाहिए। इसमें पहले ए [] के तत्वों को चुना जाना चाहिए, फिर बी [] के चुने हुए तत्वों को उसी क्रम में चुना जाना चाहिए जैसे वे मूल सरणी में दिखाई देते हैं।

  1. एक सी ++ फ़ंक्शन में दो आयामी सरणी पास करना

    C++ फ़ंक्शन के तर्क के रूप में संपूर्ण सरणी को पारित करने की अनुमति नहीं देता है। हालांकि, आप किसी अनुक्रमणिका के बिना सरणी का नाम निर्दिष्ट करके किसी सरणी में एक सूचक पास कर सकते हैं। किसी फ़ंक्शन में 2D सरणी पास करने के तीन तरीके हैं - 2D सरणी के स्तंभों का आकार निर्दिष्ट करें void processArr(int