在 C++ 中找到所有子序列總和的總和
考慮我們有一個有 n 個元素的陣列 A。我們必須找到陣列中所有子集和的總和。因此,如果陣列為 A = [5, 6, 8],則如下所示 −
| 子集 | 和 |
|---|---|
| 5 | 5 |
| 6 | 6 |
| 8 | 8 |
| 5,6 | 11 |
| 6,8 | 14 |
| 5,8 | 13 |
| 5,6,8 | 19 |
| 總和 | 76 |
由於該陣列有 n 個元素,那麼我們有 2n 個子集(包括空集)。如果仔細觀察,我們會發現每個元素出現 2n-1 次
示例
#include<iostream>
#include<cmath>
using namespace std;
int totalSum(int arr[], int n) {
int res = 0;
for (int i = 0; i < n; i++)
res += arr[i];
return res * pow(2, n - 1);
}
int main() {
int arr[] = { 5, 6, 8 };
int n = sizeof(arr)/sizeof(arr[0]);
cout << "Total sum of the sum of all subsets: " << totalSum(arr, n) << endl;
}輸出
Total sum of the sum of all subsets: 76
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP