zoukankan      html  css  js  c++  java
  • combination sum(I, II, III, IV)

    II 简单dfs

     1 vector<vector<int>> combinationSum2(vector<int>& candidates, int target) {
     2         
     3         vector<vector<int>> ans;
     4         vector<int> cur;
     5         sort(candidates.begin(), candidates.end()); // 排序后去重
     6         dfs(0,target,candidates,cur,ans);
     7         return ans;
     8     }
     9     void dfs(int level, int target, vector<int>& candidates,vector<int>& cur,vector<vector<int>> &ans)
    10     {
    11         if(target==0)
    12         {
    13             ans.push_back(cur);
    14             return;
    15         }
    16         if(target<0)return;
    17         for(int i=level;i<candidates.size();i++)
    18         {
    19                 if (i > level && candidates[i] == candidates[i - 1])continue;// 去重
    20                 cur.push_back(candidates[i]);
    21                 dfs(i+1,target-candidates[i],candidates,cur,ans);
    22                 cur.pop_back();
    23         }
    24             
    25     }

    III 简单dfs递归,限制条件是k个数其和为n

     1     vector<vector<int>> combinationSum3(int k, int n) {
     2         vector<vector<int>> ans;
     3         vector<int> cur;
     4         dfs(k,n,1,cur,ans);
     5         return ans;
     6     }
     7     void dfs(int k,int n, int level, vector<int> &cur, vector<vector<int>> &ans)
     8     {
     9         if(k==0&&n==0)
    10         {
    11             ans.push_back(cur);
    12             return;
    13         }
    14         if(k==0)return;
    15         for(int i=level;i<=9;i++)
    16         {
    17             cur.push_back(i);
    18             dfs(k-1,n-i,i+1,cur,ans);
    19             cur.pop_back();
    20         }
    21     }

    IV 简单dp,dfs超时,记忆化dfs应该可以

    1         dp[0]=1;
    2         for(int i=1;i<=target;i++)
    3         {
    4             for(int j=0;j<nums.size();j++)
    5             {
    6                 if(nums[j]<=i)dp[i]+=dp[i-nums[j]];
    7             }
    8         }
    9         return dp[target];    
  • 相关阅读:
    常用SQL语句
    H5内嵌原生app
    github 从一个仓库换到另一个仓库
    vue使用install函数把组件做成插件方便全局调用
    git 支持tree命令
    vue---vue2.x自定义plugin,给vue添加全局方法,原型上增加全局方法
    vue 生命周期函数
    登录拦截设置白名单-坑
    vue
    vue实现滚动条滚到相应高度触发动画的操作
  • 原文地址:https://www.cnblogs.com/demian/p/9699990.html
Copyright © 2011-2022 走看看