Wir haben ein Array bestehend aus positiven und negativen Zahlen. Die Aufgabe besteht darin, die maximale Differenz zwischen einer Teilmenge positiver Zahlen und einer Teilmenge negativer Zahlen im Array zu ermitteln. Da wir Teilmengen positiver und negativer Zahlen haben, wird die Differenz (Summe positiver Zahlen) – (Summe negativer Zahlen) immer maximal sein. Dies liegt daran, dass durch Subtrahieren negativer Zahlen diese addiert werden. Das Umwandeln aller negativen Zahlen in positive Zahlen und das Hinzufügen aller Elemente des Arrays führt zum gewünschten Ergebnis. Sehen wir uns einige Beispiele an, um zu verstehen: −
Input − Arr[] = { -2, 0, -3, 8, 10, 12, -4 }
Output − Maximale Differenz zwischen zwei Teilmengen − 39
Erklärung − Die Summe der positiven Teilmenge {0, 8,10,12} beträgt 30
Die Summe der negativen Teilmenge {-2, -3, -4} beträgt -9
Die maximale Differenz beträgt 30 - (-9) = 39
Input − Arr[] = { -5, -15, -3, -2, 10, 20, 15 }
Output − Maximum zwischen den beiden Teilmengen Differenz − 70
Erklärung − Die Summe der positiven Teilmenge {10, 20, 15} beträgt 45
Die Summe der negativen Teilmenge {-5, -15, -3, -2} beträgt -25
Maximale Differenz wird 45 - (-25) = 70 sein
Wir verwenden ein ganzzahliges Array Arr[], das aus positiven und negativen Zahlen besteht
Funktion subsetDifference( int arr[ ],int n ) wird verwendet, um die maximale Differenz zwischen einer Teilmenge negativer und positiver Zahlen zu ermitteln. Es akzeptiert zwei Parameter, einer ist das Array selbst und der andere ist seine Größe n.
Verwenden Sie die Variable sum=0, um die Summe aller Elemente des Arrays zu speichern.
Beginnen Sie von links und verwenden Sie eine for-Schleife, um jedes Element des Arrays zu durchlaufen (i=0;i
Wenn das aktuelle Element eine negative Zahl (
Addiere jedes Element zur Summe.
Gibt die Summe als größtmögliche Teilmengendifferenz zurück.
Demonstration
#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; }
Wenn wir den obigen Code ausführen, wird die folgende Ausgabe generiert: −
Maximized difference between two subsets: 70
Das obige ist der detaillierte Inhalt vonMaximieren Sie die Differenz zwischen zwei Teilmengen negativer Zahlen in einer Menge, implementiert in C. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!