【leetcode】216. 组合总和 III

 

void recursion(int k,int n,int* returnSize,int* ColSize,int start,int cnt,int sum,int* temp,int** arr){
    if(cnt==k){
        if(sum==n){
            arr[(*returnSize)]=(int*)calloc(cnt,sizeof(int));
            memcpy(arr[(*returnSize)],temp,sizeof(int)*cnt);
            ColSize[(*returnSize)++]=cnt;
        }
        return;
    }
    for (int i=start; i<=9 && sum<n; i++)
    {
        temp[cnt]=i;
        recursion(k,n,returnSize,ColSize,i+1,cnt+1,sum+i,temp,arr);
    }
}
int** combinationSum3(int k, int n, int* returnSize, int** returnColumnSizes){
    int** arr=(int**)calloc(1000,sizeof(int*));
    int temp[1000];
    *returnSize=0;
    *returnColumnSizes=(int*)calloc(1000,sizeof(int));
    recursion(k,n,returnSize,*returnColumnSizes,1,0,0,temp,arr);
    return arr;
}

 

posted @ 2020-12-27 14:30  温暖了寂寞  阅读(49)  评论(0编辑  收藏  举报