【LeetCode】216. 組合總和 III 結題報告 (C++)
阿新 • • 發佈:2018-11-21
原題地址:https://leetcode-cn.com/problems/combination-sum-iii/submissions/
題目描述:
找出所有相加之和為 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]]
解題方案:
回溯法,記住使用dsf深度優先遍歷就完事了。
程式碼:
class Solution { public: vector<vector<int>> ans; void dsf(int k, int n, int m, vector<int> mem){ if(n == 0 && k == 0) ans.push_back(mem); if(n < 0 || k < 0) return; for(int i = m; i <= 9; i ++){ mem.push_back(i); dsf(k - 1, n - i, 1 + i, mem); mem.pop_back(); } } vector<vector<int>> combinationSum3(int k, int n) { vector<int> mem; dsf(k, n, 1, mem); return ans; } };