原题地址(中等)

方法1—回溯

这题和第39题组合总和、第40题组合总和II极其相似,实际上会了那两道题的其中一道,这道题就自然而然了。
附上39题题解。
39. 组合总和
直接借助第39题中威威哥的解题思路,稍作改动就行了。

  1. class Solution {
  2. public:
  3. vector<int> v;
  4. vector<vector<int>> ans;
  5. void dfs(int cur, int len, int target){
  6. if(v.size() == len){
  7. if(target == 0) ans.push_back(v);
  8. return;
  9. }
  10. for(int i=cur; i<=9; i++){
  11. v.push_back(i);
  12. dfs(i+1, len, target-i);
  13. v.pop_back();
  14. }
  15. }
  16. vector<vector<int>> combinationSum3(int k, int n) {
  17. if(!k) return {};
  18. dfs(1, k, n);
  19. return ans;
  20. }
  21. };