• 216. Combination Sum III


    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.

    Note:

    • All numbers will be positive integers.
    • The solution set must not contain duplicate combinations.

    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]]

    Approach #1: BackTracking. [C++]

    class Solution {
    public:
        vector<vector<int>> combinationSum3(int k, int n) {
            vector<int> sol;
            vector<vector<int>> ans;
            helper(k, n, sol, ans);
            return ans;
        }
    private:
        void helper(const int k, int n, vector<int> v, vector<vector<int>>& ans) {
            if (v.size() == k && n == 0) {
                ans.push_back(v);
                return;
            }
            if (v.size() < k) {
                for (int i = v.empty()?1:v.back()+1; i <= 9; ++i) {
                    if (n - i < 0) break;
                    v.push_back(i);
                    helper(k, n-i, v, ans);
                    // this is I don't care in the first time.
                    v.pop_back();
                }   
            }
        }
    };
    

      

    永远渴望,大智若愚(stay hungry, stay foolish)
  • 相关阅读:
    25:最长最短单词
    09:向量点积计算
    08:石头剪刀布
    07:有趣的跳跃
    36:计算多项式的值
    33:计算分数加减表达式的值
    hdu 2289 Cup (二分法)
    Android-补间动画效果
    UVA 586 Instant Complexity
    企业门户(Portal)项目实施方略与开发指南
  • 原文地址:https://www.cnblogs.com/h-hkai/p/10347250.html
Copyright © 2020-2023  润新知