Maison > développement back-end > C++ > le corps du texte

Maximiser la différence entre deux sous-ensembles de nombres négatifs dans un ensemble, implémenté en C

WBOY
Libérer: 2023-08-25 14:49:13
avant
914 Les gens l'ont consulté

Maximiser la différence entre deux sous-ensembles de nombres négatifs dans un ensemble, implémenté en C

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

La méthode du programme suivant est la suivante

  • 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.

Exemple

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;
}
Copier après la connexion

Sortie

Si nous exécutons le code ci-dessus, la sortie suivante sera générée −

Maximized difference between two subsets: 70
Copier après la connexion

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!

source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal