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

    Ensure that numbers within the set are sorted in ascending order.


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

    Runtime: 0ms

     1 class Solution {
     2 public:
     3     vector<vector<int> > combinationSum3(int k, int n) {
     4         vector<vector<int> > result;
     5         vector<int> temp;
     6         vector<int> num;
     7         
     8         for(int i = 1; i <= 9; i++)
     9             num.push_back(i);
    10         
    11         dfs(result, temp, num, 0, n, k);
    12         return result;
    13    } 
    14    
    15    void dfs(vector<vector<int> >& result, vector<int>& temp, vector<int> num, int start, int diff, int k){
    16        if(diff == 0){
    17            if(temp.size() == k)
    18                result.push_back(temp);
    19            return;
    20        }
    21        
    22        for(int i = start; i < num.size(); i++){
    23            if(diff < num[i]) return;
    24            
    25            temp.push_back(num[i]);
    26            dfs(result, temp, num, i + 1, diff - num[i], k);
    27            temp.pop_back();
    28        }
    29    }
    30 };
     1 class Solution {
     2 public:
     3     vector<vector<int> > combinationSum3(int k, int n) {
     4         vector<vector<int> > result;
     5         vector<int> temp;
     6         vector<int> num;
     7         
     8         dfs(result, temp, 1, n, k);
     9         return result;
    10    } 
    11    
    12    void dfs(vector<vector<int> >& result, vector<int>& temp, int start, int diff, int k){
    13        if(diff == 0){
    14            if(temp.size() == k)
    15                result.push_back(temp);
    16            return;
    17        }
    18        
    19        for(int i = start; i <= 9; i++){
    20            if(diff < i) return;
    21            
    22            temp.push_back(i);
    23            dfs(result, temp, i + 1, diff - i, k);
    24            temp.pop_back();
    25        }
    26    }
    27 };
  • 相关阅读:
    Running APP 使用说明
    Android 控件八 WebView 控件
    Android 控件七 ImageView 控件
    Android 控件六 CheckBox 控件
    Android 控件五 RadioButton 控件
    Android 控件四 EditText 控件
    Android 控件三 TextView 控件实现 Button
    Android 控件二 Button
    Android 基础控件演示实例
    Android 控件一 TextView
  • 原文地址:https://www.cnblogs.com/amazingzoe/p/4850641.html
Copyright © 2011-2022 走看看