Nous avons un tableau composé de nombres positifs et négatifs. La tâche consiste à trouver la différence maximale entre un sous-ensemble de nombres positifs et un sous-ensemble de nombres négatifs dans le tableau. Puisque nous avons des sous-ensembles de nombres positifs et négatifs, la différence (somme des nombres positifs) - (somme des nombres négatifs) sera toujours maximale. En effet, soustraire des nombres négatifs les ajoutera. La conversion de tous les nombres négatifs en nombres positifs et l'ajout de tous les éléments du tableau produiront le résultat souhaité. Voyons quelques exemples pour comprendre −
Input − Arr[] = { -2, 0, -3, 8, 10, 12, -4 }
Output − Différence maximale entre deux sous-ensembles − 39
Explication − La somme du sous-ensemble positif {0, 8,10,12} est 30
La somme du sous-ensemble négatif {-2, -3, -4} est -9
La différence maximale sera 30 - (-9) = 39
Input − Arr[] = { -5, -15, -3, -2, 10, 20, 15 }
Output − Maximum entre les deux sous-ensembles Différence − 70
Explication − La somme du sous-ensemble positif {10, 20, 15} est 45
La somme du sous-ensemble négatif {-5, -15, -3, -2} est -25
Différence maximale sera 45 - (-25) = 70
Nous utilisons un tableau d'entiers Arr[] qui se compose de nombres positifs et négatifs
function subsetDifference( int arr[ ],int n ) est utilisé pour trouver la différence maximale entre un sous-ensemble de nombres négatifs et positifs. Il accepte deux paramètres, l'un est le tableau lui-même et l'autre est sa taille n.
Utilisez la variable sum=0 pour stocker la somme de tous les éléments du tableau.
Commencez par la gauche et utilisez une boucle for pour parcourir chaque élément du tableau (i=0;i
Si l'élément actuel est un nombre négatif (
Ajoutez chaque élément à la somme.
Renvoyer la somme comme la plus grande différence de sous-ensemble possible.
Démonstration
#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; }
Si nous exécutons le code ci-dessus, la sortie suivante sera générée −
Maximized difference between two subsets: 70
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!