求的数组中不定元素的和为一个定制的所有可能

来源:互联网 发布:淘宝红包怎么设置 编辑:程序博客网 时间:2024/06/05 17:26

在这个题目中,我们仿照兑换零钱的思路,进行解析,int a[]={1,5,6,48,12};   int b[5]={0};,其中数组a中是待选元素的集合,b对应的相应坐标指的是a数组中对应坐标的值是否存在。,与兑换零钱不同的是sum不但要符合我们的需求,同时b中所有的元素必须是0或者1,不能为其他的数值。现在代码如下:

int a[]={1,5,6,48,12};int b[5]={0};int g_sum=6;void getSum(int sum,int index){if(sum==g_sum){for(int i=0;i<5;i++){if(b[i]>=2){return;}}//执行到此才是符合条件的for(int i=0;i<5;i++){if(b[i]==1){cout<<a[i]<<"  ";}}cout<<endl;}else if(sum>g_sum){return;}else{for(int i=index;i<5;i++){b[i]++;getSum(sum+a[i],i);b[i]--;}}}int main(){getSum(0,0);return 0;}


0 0