int main(void)
{
	int	**res, n, *col;

	res = combinationSum3(3, 28, &col, &n);
	return(0);
}
 vector<vector<int>> combinationSum3(int k, int n) 
 {
     vector<int> path;
     vector<vector<int>> ret;
     combinationSum3(1, k, n, path, ret);
     return ret;
 }
int main(void)
{
	int	**res, n, i, *col;
	res = combinationSum3(3, 9, &col, &n);
	for (i = 0; i < n; i++)
		printf("%d %d %d\n", res[i][0], res[i][1], res[i][2]);
	return(0);
}
Esempio n. 4
0
 vector<vector<int>> combinationSum3(int k, int n) {
     if(!k)
         return result;
     
     vector<int> tempRes;
     tempRes.reserve(k);
     
     combinationSum3(1, k, n, tempRes, 0);
     
     return result;
 }
 void combinationSum3(int idx, int k, int target, vector<int>& v, vector<vector<int>>& result){
   if (!k){
     if (!target)
       result.push_back(v);
     return;
   }
   for (int i = idx; i <= 9 && i <= target; i++){
     v.push_back(i);
     combinationSum3(i + 1, k - 1, target - i, v, result);
     v.pop_back();
   }
 }
Esempio n. 6
0
 void combinationSum3(vector<vector<int>> &res, vector<int> &sol, int k, int n) {
     if(sol.size() == k && n == 0) {
         res.push_back(sol);
     }
     else {
         for(int i= sol.empty()?1:sol.back()+1; i<=n && i <= 9; i++) {
             sol.push_back(i);
             combinationSum3(res, sol, k, n-i);
             sol.pop_back();
         }
     }
     
 }
 void combinationSum3(const int k, const int n, int pathSum, vector<int> &path,
                      vector<vector<int>> &result) {
   if (path.size() == k && pathSum == n) {
     result.emplace_back(path);
   } else if (path.size() < k && pathSum < n) {
     int start = path.empty() ? 1 : path.back() + 1;
     for (int idx = start; idx <= 9; ++idx) {
       path.emplace_back(idx);
       combinationSum3(k, n, pathSum + idx, path, result);
       path.pop_back();
     }
   }
 }
 void combinationSum3(int cur, int k, int n, vector<int> &path, vector<vector<int>> &ret)
 {
     if (n == 0 && k == 0)
     {
         ret.push_back(path);
         return;
     }
     
     for (int i = cur; i < 10; ++i)
     {
         if (n - i < 0) break;
         path.push_back(i);
         combinationSum3(i + 1, k - 1, n - i, path, ret);
         path.pop_back();
     }
 }
Esempio n. 9
0
File: 216.cpp Progetto: byc1234/oj
 void combinationSum3(int k, int target, int s, vector<int> path, vector<vector<int>> &res) {
     if (k < 0) return;
     if (k == 0) {
         if (target == 0) {
             res.push_back(path);
         }
         return;
     }
     if (target < s) return;
     
     for (int i = s; i < 10; i++) {
         path.push_back(i);
         combinationSum3(k-1, target-i, i+1, path, res);
         path.pop_back();
     }
 }
Esempio n. 10
0
    void combinationSum3(int target, std::vector<std::vector<int> > &res, std::vector<int> &combination, int begin, int need) {
        
        // okay , target == 0
        if (!target) {
            res.push_back(combination);
            return;
        }
        else if (!need) // need == 0 , end
            return;

        // i + i+1 + ... + i+need-1
        
        for (int i = begin; i < 10 && target >=   need * (2*i + need - 1) / 2; ++i) {
            combination.push_back(i);
            combinationSum3(target - i, res, combination, i + 1, need - 1);
            combination.pop_back();
        }
    }
Esempio n. 11
0
 void combinationSum3(int num, int k, int n, vector<int>& tempRes, int sum)
 {
     if(k == 0 && sum == n)
     {
         result.push_back(tempRes);
         return;
     }
     
     for(int i = num; i < 10; i++)
     {
         if(i + sum <= n && k)
         {
             tempRes.push_back(i);
             combinationSum3(i+1, k-1, n, tempRes, sum+i);
             tempRes.pop_back();
         }
         else
             return;
     }
 }
Esempio n. 12
0
 vector<vector<int>> combinationSum3(int k, int n) {
     vector<vector<int>> res;
     vector<int> sol;
     combinationSum3(res, sol, k, n);
     return res;
 }
 vector<vector<int>> combinationSum3(int k, int n) {
   vector<int> path;
   vector<vector<int>> result;
   combinationSum3(k, n, 0, path, result);
   return move(result);
 }
Esempio n. 14
0
File: 216.cpp Progetto: byc1234/oj
 vector<vector<int>> combinationSum3(int k, int n) {
     vector<int> path;
     vector<vector<int>> res;
     combinationSum3(k, n, 1, path, res);
     return res;
 }
 vector<vector<int>> combinationSum3(int k, int n) {
   vector<vector<int>> result;
   vector<int> v;
   combinationSum3(1, k, n, v, result);
   return result;
 }
Esempio n. 16
0
 std::vector<std::vector<int> > combinationSum3(int k, int n) {
     std::vector<std::vector<int> > res;
     std::vector<int> combination;
     combinationSum3(n, res, combination, 1, k);
     return res;
 }
Esempio n. 17
0
#include "Catch/single_include/catch.hpp"

#include "CombinationSum3.hpp"

TEST_CASE("Combination Sum 3") {
    std::vector<std::vector<int>> result{{1, 2, 6},
                                         {1, 3, 5},
                                         {2, 3, 4}};
    auto ret = combinationSum3(3, 9);

    REQUIRE(ret == result);
}