Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

C . में ऋणात्मक समुच्चय के दो उपसमुच्चय के बीच अंतर को अधिकतम करें


हमें धनात्मक और ऋणात्मक पूर्णांकों की एक सरणी दी गई है। कार्य सरणी में मौजूद तत्वों के सकारात्मक और नकारात्मक सबसेट के बीच अधिकतम अंतर खोजना है। जैसा कि हमारे पास सकारात्मक और नकारात्मक संख्याओं के उपसमुच्चय हैं। तब अंतर (सकारात्मक का योग) - (नकारात्मक का योग) हमेशा अधिकतम होगा। ऐसा इसलिए है क्योंकि नकारात्मक घटाना उन्हें जोड़ देगा। सभी नकारात्मक को सकारात्मक में परिवर्तित करना और सरणी के सभी तत्वों को जोड़ना वांछित परिणाम देगा। आइए समझने के लिए उदाहरण देखें -

इनपुट - Arr[] ={ -2, 0, -3, 8, 10, 12, -4}

आउटपुट − दो सबसेट के बीच अधिकतम अंतर - 39

स्पष्टीकरण - धनात्मक पूर्णांक उपसमुच्चय {0, 8,10,12} का योग 30 होता है

ऋणात्मक पूर्णांक उपसमुच्चय { -2, -3, -4 } योग -9 है

अधिकतम अंतर 30 होगा - (-9) =39

इनपुट - Arr[] ={ -5, -15, -3, -2, 10, 20, 15 }

आउटपुट − दो सबसेट के बीच अधिकतम अंतर - 70

स्पष्टीकरण - धनात्मक पूर्णांक उपसमुच्चय { 10, 20, 15 } का योग 45 होता है

ऋणात्मक पूर्णांक उपसमुच्चय { -5, -15, -3, -2} योग -25

. है

अधिकतम अंतर 45 - (-25) =70

. होगा

नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है

  • हम एक पूर्णांक सरणी लेते हैं जिसमें धनात्मक और ऋणात्मक पूर्णांक होते हैं जैसे Arr[]

  • फ़ंक्शन सबसेट डिफरेंस (इंट एआर [], इंट एन) नकारात्मक और सकारात्मक पूर्णांक के दो सबसेट के बीच अधिकतम अंतर को खोजने के लिए है। इसमें दो तर्क होते हैं, एक स्वयं सरणी है और दूसरा इसका आकार n है।

  • सरणी के सभी तत्वों के योग को संग्रहीत करने के लिए एक चर राशि =0 लें।

  • बाएं से शुरू करते हुए, लूप के लिए (i=0;i का उपयोग करके सरणी के प्रत्येक तत्व को पार करें

  • यदि वर्तमान तत्व ऋणात्मक है (<0) -1 से गुणा करके इसे धनात्मक बनाएं।(arr[i]=arr[i]*-1 )

  • प्रत्येक तत्व को योग में जोड़ें।

  • जितना संभव हो सके अधिकतम सबसेट अंतर के रूप में योग लौटाएं।

उदाहरण

#include <stdio.h>
int subsetDifference(int arr[], int n){
   int sum = 0;
   for (int i = 0; i < n; i++){
      if(arr[i]<0)
         arr[i]=arr[i]*-1;
      sum += arr[i];
   }
   return sum;
}
// Driver Code
int main(){
   int arr[] = { -1, 3, 5, 17, -32, 12 };
   int n = 6;
   printf("Maximized difference between subsets : %d", subsetDifference(arr, n));
   return 0;
}

आउटपुट

यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -

Maximized difference between two subsets: 70

  1. एंड्रॉइड में दो तिथियों के बीच अंतर कैसे प्राप्त करें?

    यह उदाहरण दर्शाता है कि मैं एंड्रॉइड में दो तिथियों के बीच अंतर कैसे प्राप्त करूं। चरण 1 - एंड्रॉइड स्टूडियो में एक नया प्रोजेक्ट बनाएं, फाइल ⇒ न्यू प्रोजेक्ट पर जाएं और एक नया प्रोजेक्ट बनाने के लिए सभी आवश्यक विवरण भरें। चरण 2 - निम्न कोड को res/layout/activity_main.xml में जोड़ें। चरण 3 -

  1. सी # कार्यक्रम दो तिथियों के बीच अंतर पाने के लिए

    दिनांक समय का उपयोग करें। C# में दो तिथियों के बीच अंतर प्राप्त करने के लिए घटाएं। सबसे पहले, दो तिथियां निर्धारित करें - DateTime date1 = new DateTime(2018, 8, 27); DateTime date2 = new DateTime(2018, 8, 28); अंतर प्राप्त करने के लिए घटाना विधि का प्रयोग करें - TimeSpan t = date2.Subtract(date1);

  1. सी # प्रोग्राम दो सूचियों के बीच अंतर सूचीबद्ध करने के लिए

    दो सूचियों के बीच अंतर प्राप्त करने के लिए, पहले दो सूचियों को C# में सेट करें - // first list List < string > list1 = new List < string > (); list1.Add("A"); list1.Add("B"); list1.Add("C"); list1.Add("D"); // second list List < string > lis