Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

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