一:题目

二:思路

1.总体来看这是一个解空间为k层的排列树 第一层为1~9
2.递归函数的参数和返回值
1>:返回值:vector<vector > res
每次的求解结果:vector path
2>:参数:
backtacking(int k,int n,int index,int sum)
这里需要的index是 因为我们每次往下递归的时候 我们的返回在 缩小
3.递归函数的终止条件为
k == path.size(),这里可能使 结果并不满足 n == sum 但也要结束递归,寻找下一个可行解即可

4.横向单层的for循环的为(1~9),纵向为递归的k层

三:上码

class Solution {public:vector<vector<int> > ans;vector<int> path;void backtacking(int k,int n,int index,int sum){if (path.size()== k) {if (n == sum) ans.push_back(path);return;//如果 path.size() == k 而 n != sum 直接结束本次循环  }for (int i = index; i <= 9; i++) {sum += i;path.push_back(i);backtacking(k,n,i+1,sum);path.pop_back();//sum -= i;//注意的是每次往上回溯的时候我们都需要将上一层存进去的剪掉,为其他可行解提供空间}}vector<vector<int>> combinationSum3(int k, int n) {/*思路:1.总体来看这是一个解空间为k层的排列树 第一层为1~92.递归函数的参数和返回值1>:返回值:vector<vector<int> > res每次的求解结果:vector<int> path2>:参数:backtacking(int k,int n,int index,int sum)这里需要的index是 因为我们每次往下递归的时候 我们的返回在 缩小3.递归函数的终止条件为k == path.size(),这里可能使 结果并不满足 n == sum 但也要结束递归,寻找下一个可行解即可4.横向单层的for循环的为(1~9),纵向为递归的k层    */backtacking(k,n,1,0);return ans;}
};

216. 组合总和 III017(回溯法求解)相关推荐

  1. [力扣leetcode39]组合总和及回溯法

    [力扣leetcode39]组合总和及回溯法 回溯yyds 小练习 回溯yyds 在算法优化上面回溯法或许没有那么引人注意,但是对于一些题目来说能够回溯已经很好了. 题目:给定一个无重复元素的数组 c ...

  2. 216.组合总和III 17.电话号码的字母组合

    216.组合总和III 回溯的常规思路做这道题: class Solution {List<List<Integer>> list = new ArrayList<> ...

  3. 代码随想录第25天 | 216. 组合总和III、17. 电话号码的字母组合

    216. 组合总和III 回溯三部曲: 和77.组合一题一样,依然需要一维数组path来存放符合条件的结果,二维数组result来存放结果集.sum用来保存当前路径上的数字总和,方便和n进行对比是否等 ...

  4. Suzy找到实习了吗Day25 | 回溯算法进行时:216. 组合总和 III,17电话号码

    216. 组合总和 III 题目 找出所有相加之和为 n 的 k 个数的组合,且满足下列条件: 只使用数字1到9 每个数字 最多使用一次 返回 所有可能的有效组合的列表 .该列表不能包含相同的组合两次 ...

  5. 代码随想录第25天|216.组合总和III ● 17.电话号码的字母组合

    216.组合总和Ⅲ 回溯三部曲 确定递归函数参数 需要一维数组path来存放符合条件的结果,二维数组result来存放结果集. 接下来还需要如下参数: targetSum(int)目标和,也就是题目中 ...

  6. LeetCode—216. 组合总和 III

    216. 组合总和 III 题目描述: 找出所有相加之和为 n 的 k 个数的组合,且满足下列条件: 只使用数字1到9 每个数字 最多使用一次 返回 所有可能的有效组合的列表 .该列表不能包含相同的组 ...

  7. day21|216.组合总和III、17.电话号码的字母组合

    216.组合总和III 找出所有相加之和为 n 的 k 个数的组合,且满足下列条件: 只使用数字1到9 每个数字 最多使用一次 返回所有可能的有效组合的列表 .该列表不能包含相同的组合两次,组合可以以 ...

  8. Day25|组合板子|216. 组合总和 III| 17. 电话号码的字母组合

    组合板子+剪枝 216. 组合总和 III 剪枝操作? 17. 电话号码的字母组合 216. 组合总和 III class Solution {private:vector<int>tem ...

  9. Day25 LeetCode 216. 组合总和 III 17. 电话号码的字母组合

    题目:216. 组合总和 III - 力扣(LeetCode) 思路: 1.递归函数参数和返回值:首先需要两个全局变量一维path数组和二维result数组,path数组用来收集路径上的元素,resu ...

最新文章

  1. mysql导入sql脚本出现there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE
  2. ListT中,Remove和RemoveAt区别
  3. C#——《C#语言程序设计》实验报告——Windows桌面编程
  4. ios时间相差多少天_iOS 计算某个时间到现在是多少月/天/时
  5. HVV之WIFI蜜罐反制红队
  6. oracle 判断为空赋一个值_求高手帮忙,oracle查出的值为null,怎么赋初始值?
  7. 【Prison Break】第二天(3.28)
  8. 没有加载jawt导致java.lang.UnsatisfiedLinkError
  9. 智能衣橱控制系统的设计
  10. bat自动输入密码_如何给电脑文件夹设置密码?一学就会
  11. R数据分析:如何在R中使用mutate
  12. Yuga Labs大举扩张,“猿”宇宙已经不远了?
  13. DBeaver(其他可视化工具一样的逻辑)连接IoTDBDriver教程
  14. Go语言之路:一、万丈高楼平地起
  15. UVA1592数据库
  16. vue-video播放器
  17. 获取二维数组的长度和宽度
  18. 网络基础服务器 与SMP、NUMA、MPP 三大体系结构科普
  19. Godaddy服务器上关于ASP.NET网站建设一些经验 - 防SQL注入攻击(三)
  20. 学计算机买什么电脑性价比高,学生用什么笔记本电脑好 性价比高的学生笔记本电脑...

热门文章

  1. go 返回mysql数组_Go基础之--操作Mysql(一)
  2. VS Code 集成 flutter dart 开发
  3. linux之自己总结学习linux的资源推荐
  4. linux之修改dns以及用netmask修改ip和网关
  5. Android之可以做的两件坏事---破解锁屏密码和获取Wifi密码
  6. 《随机过程》布朗运动理论中的两个反常问题
  7. 令人难忘的初吻描写......
  8. 仅凭借一本薄薄的时间简史,征服了全球读者...
  9. 用高等数学“铲雪”!这个200多年前的证明太厉害了,有城市用它省了2000多万..........
  10. 会按摩的充气颈枕,只占行李箱一个角,却能让你的脖子爽到爆