leetcode 216. 组合总和 III

找出所有相加之和为 的 个数的组合组合中只允许含有1 - 9的正整数,并且每种组合中不存在重复的数字。

说明:

  • 所有数字都是正整数。
  • 解集不能包含重复的组合。 

示例 1:

输入: k = 3, n = 7
输出: [[1,2,4]]

示例 2:

输入: k = 3, n = 9
输出: [[1,2,6], [1,3,5], [2,3,4]]

 思路:和上一题的思路一样, 只是加了一个条件, 长度要是规定的长度

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

猜你喜欢

转载自www.cnblogs.com/mr-stn/p/9033525.html