-
216.组合总和III
-
class Solution { public: vector<vector<int>> b; vector<int> a; void dfs(int k, int n, int s, int sum) { if (sum == n && a.size() == k) { b.push_back(a); return; } if (a.size() > k || sum >= n) return; for (int i = s; i <= 9; i++) { a.push_back(i); dfs(k, n, i + 1, sum + i); a.pop_back(); } } vector<vector<int>> combinationSum3(int k, int n) { dfs(k, n, 1, 0); return b; } };
-
17.电话号码的字母组合
-
class Solution { public: vector<string> b; string a; string w[10] = {"abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"}; string k; void dfs(int size) { if (a.size() == size) { b.push_back(a); return; } for (int i = 0; i < w[k[a.size()] - '2'].size(); i++) { a.push_back(w[k[a.size()] - '2'][i]); dfs(size); a.pop_back(); } } vector<string> letterCombinations(string digits) { b.clear(); k = digits; if (k.size() == 0) return b; dfs(digits.size()); return b; } };