ホームページ  >  記事  >  バックエンド開発  >  セット内の負の数の 2 つのサブセットの差を最大化します。C で実装されています。

セット内の負の数の 2 つのサブセットの差を最大化します。C で実装されています。

WBOY
WBOY転載
2023-08-25 14:49:13905ブラウズ

セット内の負の数の 2 つのサブセットの差を最大化します。C で実装されています。

正の数値と負の数値で構成される配列があります。このタスクは、配列内の正の数値のサブセットと負の数値のサブセットの間の最大差を見つけることです。正の数値と負の数値のサブセットがあるため、差 (正の数値の合計) - (負の数値の合計) は常に最大になります。負の数を減算すると加算されるためです。すべての負の数を正の数に変換し、配列のすべての要素を追加すると、望ましい結果が得られます。理解するためにいくつかの例を見てみましょう −

Input − Arr[] = { -2, 0, -3, 8, 10, 12, -4 }

出力 − 2つのサブセット間の最大差 − 39

説明 − 正のサブセット{0、8、10、12}の合計は30

負のサブセット {-2、-3、-4} の合計は -9

最大の差は 30 - (-9) = 39

Enter − Arr[] = { -5, -15, -3, -2, 10, 20, 15 }

出力 − 2 つのサブセット間の最大差− 70

説明 -正のサブセット{10、20、15}の合計は45です。

負のサブセットの合計{-5、-15、-3、-2 } の合計は -25

最大の差は 45 - (-25) = 70

次のプログラムの方法は次のとおりです

  • 整数配列 Arr[]

  • は、正と負の数で構成される整数配列です。関数 subsetDifference(int arr[],int n) は、次の目的で使用されます。負の数と正の数のサブセット間の最大差を見つけます。 2 つのパラメータを受け入れます。1 つは配列そのもので、もう 1 つはそのサイズ n です。

  • 変数 sum=0 を使用して、配列のすべての要素の合計を保存します。

  • #左から開始して、for ループを使用して配列の各要素 (i=0;i
  • 現在の要素が負の数 (
  • 各要素を合計に加算します。

  • 合計をサブセットの差の最大値として返します。

デモンストレーション

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

出力

上記のコードを実行すると、次の出力が生成されます -

リーリー

以上がセット内の負の数の 2 つのサブセットの差を最大化します。C で実装されています。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。