Find all valid combinations of k numbers that sum up to n such that the following conditions are true:
1 through 9 are used.Return a list of all possible valid combinations. The list must not contain the same combination twice, and the combinations may be returned in any order.
Example 1:
Input: k = 3, n = 7
Output: [[1,2,4]]
Explanation:
1 + 2 + 4 = 7
There are no other valid combinations.
Example 2:
Input: k = 3, n = 9
Output: [[1,2,6],[1,3,5],[2,3,4]]
Explanation:
1 + 2 + 6 = 9
1 + 3 + 5 = 9
2 + 3 + 4 = 9
There are no other valid combinations.

class Solution {
public:
vector<vector<int>> combinationSum3(int k, int n) {
vector<vector<int>> res;
vector<int> temp;
func(n,k,res,temp,1);
return res;
}
void func(int n,int k,vector<vector<int>>& res,vector<int>&temp,int start)
{
if(n==0&&temp.size()==k)
res.push_back(temp);
if(n<0)
return;
for(int i=start;i<=9;i++)
{
temp.push_back(i);
func(n-i,k,res,temp,i+1);
temp.pop_back();
}
}
};