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

C में ऋणात्मक संख्याओं वाले सेट के दो उपसमुच्चयों के बीच अंतर को अधिकतम करना


समस्या विवरण

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

उदाहरण 1

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

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

व्याख्या: धनात्मक पूर्णांक उपसमुच्चय {0, 8, 10, 12} योग 30

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

अधिकतम अंतर = 30 - (-9) = 39

उदाहरण 2

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

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

व्याख्या: धनात्मक पूर्णांक उपसमुच्चय {10, 20, 15} योग 45

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

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

दृष्टिकोण

  • धनात्मक और ऋणात्मक पूर्णांकों वाली पूर्णांक सरणी Arr[] लें।
  • फ़ंक्शन subsetDifference(int arr[], int n) ऋणात्मक और धनात्मक पूर्णांकों के दो उपसमुच्चयों के बीच अधिकतम अंतर ढूंढता है। यह दो तर्क लेता है: सरणी और इसका आकार n।
  • चर sum=0 सभी तत्वों का योग संग्रहीत करने के लिए।
  • बाएं से शुरू करके, for लूप (i=0; i
  • यदि वर्तमान तत्व ऋणात्मक है (<0), तो -1 से गुणा करके इसे धनात्मक बनाएं (arr[i] = arr[i] * -1)।
  • प्रत्येक तत्व को sum में जोड़ें।
  • sum को अधिकतम संभव उपसमुच्चय अंतर के रूप में लौटाएं।

C प्रोग्राम उदाहरण

#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;
}

// ड्राइवर कोड
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, 3, 5, 17, -32, 12} के निरपेक्ष मानों का योग = 1+3+5+17+32+12 = 70।


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

    Android में दो तिथियों के बीच दिनों का अंतर निकालने का गाइड यह ट्यूटोरियल दिखाता है कि कैसे SimpleDateFormat और Date क्लास का उपयोग करके दो तिथि स्ट्रिंग्स के बीच दिनों का अंतर निकाला जाए। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में File → New Project चुनकर नया प्रोजेक्ट बनाएं। चरण 2: लेआउट फ़ाइ

  1. - C# में दो तारीखों के बीच अंतर निकालना

    C# में दो DateTime मानों के बीच अंतर निकालने के लिए Subtract() मेथड या घटाव ऑपरेटर (-) का उपयोग किया जाता है, जो एक TimeSpan ऑब्जेक्ट लौटाता है। उदाहरण using System; public class Demo { public static void Main() { // दो तारीखें सेट करें DateTime date1 = new DateTime(2018,

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

    दो सूचियों के बीच अंतर निकालने के लिए, पहले C# में दो सूचियाँ सेट करें: // पहली सूची List list1 = new List(); list1.Add(A); list1.Add(B); list1.Add(C); list1.Add(D); // दूसरी सूची List list2 = new List(); list2.Add(C); list2.Add(D); foreach(string value in list2) { Console.WriteLine(value); }