Combination Sum IV
来源:互联网 发布:windows安装光盘图片 编辑:程序博客网 时间:2024/06/08 00:33
第一种方法:
dfs遍历,时间复杂度(nums.size())^target,超时
class Solution {public: int combinationSum4(vector<int>& nums, int target) { int count = 0; dfs(nums,0,count,target); return count; } void dfs(const vector<int>& nums, int sum, int & count, const int & target) { if(sum==target){count++;return;} if(sum>target) return; for(auto it = nums.begin();it!=nums.end();it++) { dfs(nums,sum+*it,count,target); } }};
第二种方法:
动态规划。分析上一种方法可以发现:dfs每次向下遍历时有很多子问题是重复的,这符合动态规划的思想,建立动态规划数组vector<int> dp(target+1,0);状态转移方程为dp[i]=Σdp[i-nums[k]] , 0<=k<nums.size();dp[i]表示当target为i 时,有多少种组合。
class Solution {public:int combinationSum4(vector<int>& nums, int target) {vector<int> dp(target + 1, 0);for (int i = 0; i <= target; i++) {for (int k = 0; k < nums.size(); k++) {if (i - nums[k] > 0) {dp[i] += dp[i - nums[k]];}else if (i - nums[k] == 0) {dp[i] += 1;}}}return dp[target];}};
0 0
- 【Leetcode】Combination Sum IV
- [leetcode] Combination Sum IV
- 377. Combination Sum IV
- 377. Combination Sum IV
- Combination Sum IV
- 377. Combination Sum IV
- 377. Combination Sum IV
- Combination Sum IV
- Combination Sum IV
- [377] Combination Sum IV
- 377. Combination Sum IV
- 377. Combination Sum IV
- Leetcode: Combination Sum IV
- leetcode_377 Combination Sum IV
- Combination Sum IV
- LeetCode Combination Sum IV
- Combination Sum IV
- 377. Combination Sum IV
- 训练指南
- Java 集合系列17之 TreeSet详细介绍(源码解析)和使用示例
- SQL2014新建表,列名无效
- Oracle数据类型
- 数据结构实验之队列一:排队买饭
- Combination Sum IV
- ajax+hibernate 实现及时刷新检测用户名
- 设计模式:命令模式
- 解决java compiler level does not match the version of the installed java project facet
- Android OpenGL添加光照和材料属性
- Android之序列化
- python学习之str
- jquery ajax 局部刷新
- 自启动文件