求给定数字的所有组合的和
例如给定数字1,2,3,其所有组合为 {},{1},{2},{3},{1,2},{1,3},{2,3},{1,2,3}。
他们的和=0+1+2+3+(1+2)+(1+3)+(2+3)+(1+2+3)=24
提示:求一个集合的子集,此问题不太好分为求规模较小元素的子集问题,但是我们可以考虑每一个元素。
也就是每一个元素取或者不取的问题,这也是一个递归的过程。
此题为附加代码题,请根据下面代码续写,按照提示信息提交相关代码即可。
#include<iostream>
using namespace std;
const int MAXSIZE = 31;
int n, a[MAXSIZE] = {0};
long long f(int i, long long sum);//前i项的各个组合之和已经算好,和为sum
int main() {
cin >> n;
for(int i = 1; i <= n; i++){
cin >> a[i];
}
cout << f(0, 0);//前0项的各个组合之和为0
return 0;
}
//************提交此行以下的代码************************
此处f()函数的实现代码
//************提交此行以上的代码************************
第一行是正整数n,n<=30
第二行是n个不大于100的互不相等的正整数
n个正整数所有组合的和