正の数値と負の数値で構成される配列があります。このタスクは、配列内の正の数値のサブセットと負の数値のサブセットの間の最大差を見つけることです。正の数値と負の数値のサブセットがあるため、差 (正の数値の合計) - (負の数値の合計) は常に最大になります。負の数を減算すると加算されるためです。すべての負の数を正の数に変換し、配列のすべての要素を追加すると、望ましい結果が得られます。理解するためにいくつかの例を見てみましょう −
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 を使用して、配列のすべての要素の合計を保存します。
#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 サイトの他の関連記事を参照してください。