#include "s0216_combination_sum_iii.hpp" void combinationSum3DFS(int k, int n, int begin, vector &path, int sum, vector> &result) { // 终止条件:高度达到上限且总和为 n if (path.size() == k && sum == n) { result.push_back(path); return; } // 开始迭代 // 当总和 > n 时,剪枝 for (int i = begin; i <= 9 && sum + i <= n; ++i) { sum += i; path.push_back(i); combinationSum3DFS(k, n, i + 1, path, sum, result); sum -= i; path.pop_back(); } } vector> S0216::combinationSum3(int k, int n) { vector path{}; vector> result; combinationSum3DFS(k, n, 1, path, 0, result); return result; }