第一题 组合总和III
class Solution {
private:
vector<vector<int>> result;
int sum = 0;
vector<int> path;
public:
void backtrack( int index,int k ,int n){
if(sum == n && path.size() == k){
result.push_back(path);
return;
}
for(int i = index; i <= 9;i++){
path.push_back(i);
sum += i;
backtrack(i+1,k,n);
path.pop_back();
sum -= i;
}
return ;
}
vector<vector<int>> combinationSum3(int k, int n) {
backtrack(1,k,n);
return result;
}
};
第二题 .电话号码的字母组合
class Solution {
string letter[10]{
"", "","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"
};
public:
vector<string> result;
string combo;
void backtrack(string digits, int index){
if(index == digits.size()){
result.push_back(combo);
return;
}
int num = digits[index]-'0';
string letters = letter[num];
for(int i = 0;i < letters.size();i++){
combo += letters[i];
backtrack(digits,index + 1);
combo.pop_back();
}
return;
};
vector<string> letterCombinations(string digits) {
if(digits.size() == 0) return result;
backtrack(digits,0);
return result;
}
};