C++ 中兩個陣列子集的最大可能差值


在本教程中,我們將討論編寫一個程式來查詢兩個陣列子集的最大可能差值

為此,我們將得到一個數組,其中包含幾個隨機整數的一個或兩個例項。我們的任務是建立該陣列的兩個子集,以便它們的和的差值最大,並且沒有子集包含重複的數字。

示例

 活動演示

#include <bits/stdc++.h>
using namespace std;
//finding maximum subset difference
int maxDiff(int arr[], int n) {
   int SubsetSum_1 = 0, SubsetSum_2 = 0;
   for (int i = 0; i <= n - 1; i++) {
      bool isSingleOccurance = true;
      for (int j = i + 1; j <= n - 1; j++) {
         if (arr[i] == arr[j]) {
            isSingleOccurance = false;
            arr[i] = arr[j] = 0;
            break;
         }
      }
      if (isSingleOccurance) {
         if (arr[i] > 0)
            SubsetSum_1 += arr[i];
         else
            SubsetSum_2 += arr[i];
      }
   }
   return abs(SubsetSum_1 - SubsetSum_2);
}
int main() {
   int arr[] = { 4, 2, -3, 3, -2, -2, 8 };
   int n = sizeof(arr) / sizeof(arr[0]);
   cout << "Maximum Difference = " << maxDiff(arr, n);
   return 0;
}

輸出

Maximum Difference = 20

更新於:09-Sep-2020

410 次瀏覽

開啟您的事業

完成課程後獲得認證

開始
廣告
© . All rights reserved.