[leetcode 216] Combination Sum III ------组合数的和(回溯法)
来源:互联网 发布:jquery怎么渲染数据 编辑:程序博客网 时间:2024/06/06 09:09
Question:
Find all possible combinations of k numbers that add up to a number n, given that only numbers from 1 to 9 can be used and each combination should be a unique set of numbers.
Ensure that numbers within the set are sorted in ascending order.
Example 1:
Input: k = 3, n = 7
Output:
[[1,2,4]]
Example 2:
Input: k = 3, n = 9
Output:
[[1,2,6], [1,3,5], [2,3,4]]
分析:
题目意思是,k表示元素个数,n表示这k个元素的和,每个元素只能是1-9的排列,而且元素不能有重复。
思路是:
回溯法。可以很容易的把解空间树画出来,就是第一层1的两个分支为:有1和无1,第二层表示2的两个选择分支。。。。
剪枝条件也很明确,元素个数比k大了,总和比n大了。
代码如下:
<span style="font-size:14px;">class Solution {public: vector<vector<int>> combinationSum3(int k, int n) { vector<vector<int>> res; vector<int> temp; if(k <= 0 || n <= 0 || n > 45 || k >= n || k > 10){ return res; } int countK = 0; int Sum = 0; if(k == 1){ if(n <= 9){ temp.push_back(n); res.push_back(temp); } return res; } helper(temp,0,k,n,1,res); return res; } void helper(vector<int>& temp,int sum,int k,int n,int cur,vector<vector<int>>& res){ if(temp.size() == k){ if(sum == n) res.push_back(temp); return; } for(int i = cur; i <= 9; ++i){ temp.push_back(i); helper(temp,sum+i,k,n,1+i,res); temp.erase(temp.end()-1); } }};</span>
0 0
- [leetcode 216] Combination Sum III ------组合数的和(回溯法)
- 【LeetCode-面试算法经典-Java实现】【216-Combination Sum III (组合数的和)】
- [leetcode][回溯] Combination Sum III
- Leetcode|Combination Sum III[回溯]
- leetcode---Combination Sum III---回溯
- Leetcode 216 Combination Sum III 组合求和
- [LeetCode] Combination Sum 和确定的组合数的个数
- leetcode Combination Sum III-回溯|递归
- 216.leetcode Combination Sum III(medium)[回溯]
- leetcode 216 Combination Sum II (回溯法)
- (回溯法)LeetCode#39. Combination Sum
- 回溯法(leetcode-Combination Sum)
- Combination Sum I II III 回溯法
- leetcode 216: Combination Sum III
- 【Leetcode】Combination Sum III #216
- Leetcode 216 Combination Sum III
- LeetCode(216)Combination Sum III
- leetcode 216: Combination Sum III
- 代码规范_3:c++ _异常
- 软件工程
- HDU 2896 病毒侵袭(AC自动机)
- 选择排序、插入排序、冒泡排序【O(n^2)】
- [ArrayList]——逻辑梳理
- [leetcode 216] Combination Sum III ------组合数的和(回溯法)
- 第6天-sql简单数据实操
- struts自定义类型转换器,局部和全局
- 且听风吟
- [BZOJ2818] gcd - 欧拉函数+筛法
- Class [org.springframework.transaction.config.TxNamespaceHandler] for namespace
- Spring的AOP自动代理(含AspectJ的AOP开发)
- 求一个数组中的第二大的数?
- Matlab中的im2col函数