216. Combination Sum III

xiaoxiao2021-02-27  144

题目:

Find all possible combinations of k numbers that add up to a number n, given that only numbers from 1 to 9 can be used and each combination should be a unique set of numbers.

Example 1:

Input: k = 3, n = 7

Output:

[[1,2,4]]

Example 2:

Input: k = 3, n = 9

Output:

[[1,2,6], [1,3,5], [2,3,4]] 题解:如果k被确定,即可通过k个循环,设置一个和为n并且各不相等来求组合解,由于k不固定即只能用递归求解,每当组合中第一个数i被确定时,即等于求剩下k-1个 和为n-i的第一个数,设置k=0并且n=0即可求解。 代码:class Solution { public: vector<vector<int>> combinationSum3(int k, int n) { vector<vector<int> > res; vector<int> out; combinationSum3DFS(k, n, 1, out, res); return res; } void combinationSum3DFS(int k, int n, int level, vector<int> &out, vector<vector<int> > &res) { if (n < 0) return; if (n == 0 && out.size() == k) res.push_back(out); for (int i = level; i <= 9; ++i) { out.push_back(i); combinationSum3DFS(k, n - i, i + 1, out, res); out.pop_back(); } } };

转载请注明原文地址: https://www.6miu.com/read-16945.html

最新回复(0)