lc39,40-组合总数1,2

#include
#include
using namespace std;
int k=0,b[20];
void CombinationSum(int num[],int target,int n,int t){
    if(target==0){
        for(int i=0;itarget)
            continue;
        if(i>t&&num[i]==num[i-1])//去重,组合总数的规定既然可以无限使用同一个数,那就把其余相同数屏蔽(面对相同数,如{2,2,3}只能选第一个23)
            continue;
        b[k++]=num[i];
        //CombinationSum(num,target-num[i],n,i);//组合总数1代码,用i使下次递归只能选择i及后面的数,去重  (面向不同的数,如{2,3}先选23不能再选32)
        CombinationSum(num,target-num[i],n,i+1);//组合总数2代码,由于一个数只能用一次原因,下次递归从下一个数开始选
        k--;
    }
}
void main(){
    int a[20];
    int n,target;
    scanf("%d%d",&n,&target);
    for(int i=0;i

你可能感兴趣的:(lc39,40-组合总数1,2)