zoukankan      html  css  js  c++  java
  • Combination Sum [LeetCode]

    Problem Description: http://oj.leetcode.com/problems/combination-sum/    

    Basic idea: It seems complicate at first. But once I got the recursive idea, the solution was neat. This code could be not efficient. I will rewrite with dynamic programming next time.

     1 class Solution {
     2 public:
     3     vector<vector<int> > combinationSum(vector<int> &candidates, int target) {
     4         // Note: The Solution object is instantiated only once and is reused by each test case.
     5         std::sort(candidates.begin(), candidates.end());
     6         vector<vector<int> > combinations;
     7         for(int i = 0; i < candidates.size(); i ++) {
     8             if(candidates[i] > target)
     9                 break;
    10             if(candidates[i] == target) {
    11                 vector<int> combination;
    12                 combination.push_back(candidates[i]);
    13                 combinations.push_back(combination);
    14             }else{
    15                 if(i == 0 && target % candidates[i] != 0)
    16                     continue;
    17                 if(i == 0 && target % candidates[i] == 0){
    18                     vector<int> combination(target / candidates[i], candidates[i]);
    19                     combinations.push_back(combination);
    20                     continue;
    21                 }
    22                 vector<int> sub_candidates(candidates.begin(), candidates.begin() + i + 1);
    23                 vector<vector<int> > rests =  combinationSum(sub_candidates, target - candidates[i]);
    25                 for(auto item: rests){
    26                     item.push_back(candidates[i]);
    27                     combinations.push_back(item);
    28                 }
    30             }
    31         }
    32         return combinations;
    33     }
    34 };

  • 相关阅读:
    圆上的整点
    学习笔记:用线性筛算不太常见的函数
    解题报告: luogu P1972
    解题报告: luogu P3907
    替罪羊树详解
    解题报告:luogu P2787
    解题报告:luogu P4170
    解题报告:luogu P4933
    10、.运维就是一场没有硝烟的战争
    九、模板层(三)
  • 原文地址:https://www.cnblogs.com/guyufei/p/3379027.html
Copyright © 2011-2022 走看看