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

    Given a set of candidate numbers (C) and a target number (T), find all unique combinations in C where the candidate numbers sums to T.

    The same repeated number may be chosen from C unlimited number of times.

    Note:

    • All numbers (including target) will be positive integers.
    • Elements in a combination (a1, a2, … , ak) must be in non-descending order. (ie, a1 ≤ a2 ≤ … ≤ ak).
    • The solution set must not contain duplicate combinations.

    For example, given candidate set 2,3,6,7 and target 7
    A solution set is: 
    [7] 
    [2, 2, 3] 

    Hide Tags
     Array Backtracking
     
     
       一道回溯题目,可以剪枝提升速度。
     
    #include <iostream>
    #include <vector>
    #include <algorithm>
    using namespace std;
    
    class Solution {
    public:
        vector<vector<int > > ret;
        vector<vector<int> > combinationSum(vector<int> &candidates, int target) {
            vector<int > stk;
            ret.clear();
            vector<int > tmp(candidates.begin(),candidates.end());
            sort(tmp.begin(),tmp.end());
            helpFun(tmp,target,0,stk);
            return ret;
        }
    
        void helpFun(vector<int> & cand,int tar, int idx,vector<int > & stk)
        {
            if(tar<0)   return ;
            if(tar==0){
                ret.push_back(stk);
                return ;
            }
            if(idx==cand.size())    return;
            stk.push_back(cand[idx]);
            helpFun(cand,tar-cand[idx],idx,stk);
            stk.pop_back();
            helpFun(cand,tar,idx+1,stk);
        }
    };
    
    int main()
    {
        vector<int > cand = {8,7,4,3};
        Solution sol;
        vector<vector<int > > ret=sol.combinationSum(cand,11);
        for(int i =0;i<ret.size();i++){
            for(int j=0;j<ret[i].size();j++)
                cout<<ret[i][j]<<" ";
            cout<<endl;
        }
        return 0;
    }
  • 相关阅读:
    封装图片处理类(缩略图)
    封装表单验证类
    魔术方法
    封装自己的smartyBC类
    快捷键
    unicode
    基本数据类型课上练习
    数制总结
    12.29.作业
    12.28作业
  • 原文地址:https://www.cnblogs.com/Azhu/p/4391404.html
Copyright © 2011-2022 走看看