zoukankan      html  css  js  c++  java
  • [leetcode-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.


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

    思路:

    回溯法。

    void combinationSum3(vector<vector<int>>&ret, vector<int>&comb, int k, int n,int &sum, int begin)
         {
             if (sum > n)return;
             if (comb.size() == k && sum != n)return;         
             else if (comb.size() == k && sum == n) 
             {
                 ret.push_back(comb);
                 return;
             }
             for (int i = begin; i <= 9;i++)
             {
                 comb.push_back(i);
                 sum += i;
                 combinationSum3(ret, comb, k, n, sum, i + 1);
                 sum -= i;
                 comb.pop_back();
             }
         }
         vector<vector<int>> combinationSum3(int k, int n)
         {
             vector<vector<int>> ret;
             vector<int> comb;
             int sum = 0;
             combinationSum3(ret, comb, k, n, sum, 1);
             return ret;
         }
  • 相关阅读:
    小程序支付
    小程序传参
    git
    学习过程遇到问题的解决方法
    进程创建注意事项:函数及对应包
    进程创建:函数及对应包
    mac解决eclipse 端口占用问题
    暴力
    doc2vec
    Java正则表达式的解释说明
  • 原文地址:https://www.cnblogs.com/hellowooorld/p/7073441.html
Copyright © 2011-2022 走看看