您的位置:首页 > 其它

【leetcode】 Combination Sum III

2015-06-02 19:44 465 查看
From : https://leetcode.com/problems/combination-sum-iii/
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]]


class Solution {
public:
vector<vector<int>> combinationSum3(int k, int n) {
vector<vector<int>> res;
vector<int> cur;
find_put(0, n, cur, res, k);
return res;
}
// 开始位置, 尚需, 已添加, 结果, 总数
void find_put(int reach, int need, vector<int>& cur, vector<vector<int> >& res, int num) {
if(cur.size()==num && need==0) {res.push_back(cur); return;}
reach++;
while(reach<10 && reach<=need && cur.size()<num) {
cur.push_back(reach);
find_put(reach, need-reach, cur, res, num);
// 还原状态
cur.pop_back();
reach++;
}
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: