216. 组合总和 III

题目描述

找出所有相加之和为 n 的 k 个数的组合,且满足下列条件:

只使用数字1到9 每个数字 最多使用一次 返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次,组合可以以任何顺序返回。

解题思路

class Solution {
public:
    vector<vector<int>>res;
    vector<int>cur;
    int cursum=0;
    int k,n;
    void bt(int start){
        if(cur.size()==k&&cursum==n){res.push_back(cur);return;}
        for(int i=start;i<10&&cursum<n;i++){
            cur.push_back(i);cursum+=i;
            bt(i+1);
            cur.pop_back();cursum-=i;
        }
    }
    vector<vector<int>> combinationSum3(int k, int n) {
        this->k=k;this->n=n;bt(1);return res;
    }
};

学习感想