出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。
说明:
所有数字都是正整数。解集不能包含重复的组合。 示例 1:
输入: k = 3, n = 7输出: [[1,2,4]]示例 2:
输入: k = 3, n = 9输出: [[1,2,6], [1,3,5], [2,3,4]]
算法:集合的二进制表示
class Solution {
public:
vector<vector<
int>> combinationSum3(
int k,
int n) {
vector<vector<
int>>
res;
for(
int i=
0;i<
512;i++
){
vector<
int>
path;
int sum=
0;
for(
int j=
0;j<
9;j++
)
if(i>>j&
1)path.push_back(j+
1),sum+=j+
1;
if(sum==n&&path.size()==
k)res.push_back(path);
}
return res;
}
};
转载于:https://www.cnblogs.com/programyang/p/11154244.html