LeetCode121:买卖股票的最佳时机(二维dp)

题目描述: 方法1:二维dp动态规划 dp[i][0],表示第i天拥有股票最大收益 dp[i][1],表示第i天没有股票最大收益 dp[i][0] = max(dp[i-1][0], -price[i]) 第i-1天就持有股票,那么就保持现状 第i天买入股票 dp[i][1] = max(dp[i-


LeetCode377:组合总和Ⅳ

题目描述: 方法1:排列形式的完全背包问题 class Solution { public: int combinationSum4(vector<int>& nums, int target) { vector<int>dp(target+1,0); dp[


LeetCode518:零钱兑换Ⅱ

题目描述: 零钱兑换Ⅰ中,所求为凑满总金额需要最少的硬币个数 类似于目标和那道题,只不过那题是01背包问题(遍历顺序为从后往前),这题为完全背包问题 方法1:完全背包问题 本题和纯完全背包问题不同,纯完全背包考虑的是最大价值,所以不用管遍历顺序,本题是求装满的方式总数,得考虑题目要求是排列数还是组合


完全背包理论基础+卡码网52题

特点:01背包同一物品只能取一次,完全背包同一物品可以取多次 题目描述: 方法1:二维dp 与01背包不同点: dp数组第一行初始化时不同 递推时,放物品i时处理情况不同,dp[i - 1][j - weight[i]] + value[i]变为dp[i][j - weight[i]] + valu


LeetCode139:单词拆分

题目描述: 方法1:回溯 class Solution { public: bool backtrack(string s,unordered_set<string> words,int StartIndex){//从StartIndex开始截取 if(StartIndex


LeetCode4131:分割回文串

题目描述: 方法1:回溯 class Solution { public: vector<string> data; vector<vector<string>> result; int Slength;//初始字符串长度,用于判断是否遍历完初始s //判断一个字符


LeetCode40:组合总和Ⅱ

题目描述: 难点:集合(数组candidates)有重复元素,但还不能有重复的组合 方法1:回溯 class Solution { public: vector<vector<int>> result; vector<int> data; void backtrack(vec


LeetCode39:组合总和

题目描述: 方法1:回溯 class Solution { public: vector<vector<int>> result; vector<int> data; void backtrack(vector<int>& candidates,int target,int


LeetCode216:组合总和Ⅲ

题目描述: 方法1:回溯,注(for循环中,回溯时,记得加上sum -= i) class Solution { public: vector<int> data; vector<vector<int>> result; void backtrack(int n,int k