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

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

WBOY
リリース: 2023-08-25 14:49:13
転載
925 人が閲覧しました

セット内の負の数の 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 までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート