Maison  >  Article  >  développement back-end  >  Maximiser la différence entre deux sous-ensembles de nombres négatifs dans un ensemble, implémenté en C

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

WBOY
WBOYavant
2023-08-25 14:49:13862parcourir

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

Sortie

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer