首页 > 其他分享 >40. 组合总和 IIc

40. 组合总和 IIc

时间:2024-03-08 18:35:03浏览次数:16  
标签:returnSize int void 40 IIc array now 总和

很好的题目,使我的大脑旋转。

/**
 * Return an array of arrays of size *returnSize.
 * The sizes of the arrays are returned as *returnColumnSizes array.
 * Note: Both returned array and *columnSizes array must be malloced, assume caller calls free().
 */
int temp[40];
int visit[101];

 int cmp(const void* a,const void* b){
    return *(int*)a-*(int*)b;
 }

 void dfs(int* candidates,int candidatesSize,int target,int** array,int* returnSize,int *column,int now,int index,int n){
     if(now>target) return;
     if(now==target){
         column[*returnSize]=n;
         array[*returnSize]=(int*)malloc(sizeof(int)*n);
         for(int i=0;i<n;i++) array[*returnSize][i]=temp[i];
         (*returnSize)++;
         return;
     }
     for(int i=index;i<candidatesSize;i++){
         if(i!=0&&candidates[i]==candidates[i-1]&&visit[i-1]==0) continue;
         temp[n]=candidates[i];
         visit[i]=1;
         dfs(candidates,candidatesSize,target,array,returnSize,column,now+temp[n],i+1,n+1);
         visit[i]=0;
     }
 }

int** combinationSum2(int* candidates, int candidatesSize, int target, int* returnSize, int** returnColumnSizes) {
    qsort(candidates,candidatesSize,sizeof(int),cmp);
    *returnSize=0;
    int* column=(int*)malloc(sizeof(int)*200);
    int** array=(int**)malloc(sizeof(int*)*200);
    for(int i=0;i<101;i++) visit[i]=0;
    dfs(candidates,candidatesSize,target,array,returnSize,column,0,0,0);
    *returnColumnSizes=column;
    return array;
}

结果:

标签:returnSize,int,void,40,IIc,array,now,总和
From: https://www.cnblogs.com/llllmz/p/18061614

相关文章

  • 39. 组合总和c
    /***Returnanarrayofarraysofsize*returnSize.*Thesizesofthearraysarereturnedas*returnColumnSizesarray.*Note:Bothreturnedarrayand*columnSizesarraymustbemalloced,assumecallercallsfree().*/inttemp[100];voiddfs(int*c......
  • STM32硬件IIC使用
    概述虽然STM32的硬件IIC据说有设计缺陷,但是经过我的实践,至少STM32F103的硬件IIC是没问题的。这里给出STM32的硬件IIC的使用以及编程思路。1.STM32硬件IIC引脚在这里给出STM32F103的硬件IIC引脚,方便查阅使用2.STM32硬件IIC使用流程STM32的硬件IIC我认为是非常具有借鉴意义的,......
  • 力扣回溯之 39. 组合总和
    //剪枝优化classSolution{  publicList<List<Integer>>combinationSum(int[]candidates,inttarget){    List<List<Integer>>res=newArrayList<>();    List<Integer>path=newArrayList<>();    A......
  • Vue学习笔记40--脚手架项目架构分析
    脚手架项目架构分析1.babel.config.js——babel的控制文件,用于ES6转ES5(一般不需要程序员进行配置,如想研究请查看babel官网)module.exports={presets:['@vue/cli-plugin-babel/preset']}2.package.json——包信息说明,例如:项目名称、版本、采用的依赖、库文件......
  • 【力扣】组合总和3(组合的去重)
    问题描述注意,如果数组里有两个元素的值相同,那么这两个元素是可以出现在同一个组合里的:但是:如果按前面的思路分析的话,会发现结果中出现很多相同的组合。像这样:这很明显是由于两个相同的1造成的,因为当前的startindex对应第一个1时,向下一层递归后,starindex定位的还是1,。如......
  • 20240307打卡
    第二周第一天第二天第三天第四天第五天第六天第七天所花时间1h5h1h1.5h代码量(行)701166282博客量(篇)1111知识点了解学会详细地全局路由配置有关动态规划算法python基础知识使用json前后端传值存值关于解决前端传JSON对象,后......
  • 算法面试通关40讲
    三分学七分练数组、链表leetcode21site#include<iostream>usingnamespacestd;structListNode{intval;ListNode*next;ListNode():val(0),next(nullptr){}ListNode(intx):val(x),next(nullptr){}ListNode(intx,ListNode*next)......
  • 216. 组合总和 IIIc
    /***Returnanarrayofarraysofsize*returnSize.*Thesizesofthearraysarereturnedas*returnColumnSizesarray.*Note:Bothreturnedarrayand*columnSizesarraymustbemalloced,assumecallercallsfree().*/inttemp[10];voiddfs(int**......
  • 洛谷题单指南-搜索-P2404 自然数的拆分问题
    原题链接:https://www.luogu.com.cn/problem/P2404题意解读:将整数拆成若干数相加,按字母序输出,可以转换成从小到大往数组填数的问题,直到填的数之和等于n。解题思路:通过DFS,每次填一个数,填数时从1~n-1逐个填注意两个条件不能继续DFS:1、将填的数之和超过n2、将填的数小于上一次填......
  • 洛谷P4069 [SDOI2016] 游戏
    题目描述我们要操作的是一条在树上的路径\(s\)->\(t\)。(1)查询\(s\)->\(t\)最大的数字。(2)在\(s\)->\(t\)上增加一个数字,输入\(a\),\(b\),对于路径上的一个点\(u\)增加的数字是\(dis(s,u)\timesa+b\)。解题思路直接查询一条从\(s\)到\(t\)的路径是十分不方便的,所以我们......