![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
dynamic programming
HJ13547816754
这个作者很懒,什么都没留下…
展开
-
0-1背包问题
递归暴力搜索#include <iostream>#define MAX 10000using namespace std; /* run this program using the console pauser or add your own getch, system("pause") or input loop */typedef pair<int,int>...原创 2018-04-17 20:51:29 · 243 阅读 · 0 评论 -
746. Min Cost Climbing Stairs
dp[i]:到达第i层时最小花费,dp[i]=min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-1];class Solution {public: int minCostClimbingStairs(vector<int>& cost) { vector<int> dp; dp.push_back(...原创 2018-04-12 22:46:05 · 135 阅读 · 0 评论 -
121. Best Time to Buy and Sell Stock
dp[i]=:第i天卖出的最大利润,dp[i]=max(dp[i-1],prices[i]-prices[j])(j<i-1)。prices[j]就是产生dp[i-1]的那个买入buyin保存买入的那天class Solution {public: int maxProfit(vector<int>& prices) { vector<in...原创 2018-04-12 23:28:58 · 103 阅读 · 0 评论 -
70. Climbing Stairs
dp[i]:到达第i层需要的步数,dp[i]=dp[i-1]+dp[i-2].我犯得两个错误,1.dp[i]=dp[i-1]+1+dp[i-2]+1 2.只求到dp[0],dp[1]就开始循环class Solution {public: int climbStairs(int n) { vector<int> dp; dp.push_bac...原创 2018-04-12 23:47:56 · 109 阅读 · 0 评论 -
198. House Robber
dp[i]:到第i间房时偷盗的最大值(可以不偷第i间房)dp[i]=max(dp[i-1],dp[i-2]+nums[i],dp[i-3]+nums[i]2,1,1,2 注意必须考虑dp[i-3]class Solution {public: int rob(vector<int>& nums) { if(nums.size()==0) ...原创 2018-04-13 10:18:26 · 127 阅读 · 0 评论 -
338. Counting Bits
4:100 ----1000 8 dp[i-flag/2](flag为2^n) .此时flag为85:101 ----1001 96:110 ----1010 107:111 ----1011 11 1100 12 dp[i-flag/2*3]+1 1101 13 ...原创 2018-04-13 11:39:12 · 108 阅读 · 0 评论 -
647. Palindromic Substrings
这道题直接用dp[i][j]保存i到j的Palindromic Substrings不好求递归式。通过分析可以知道最多n+(n-1)+(n-2)+....+1,以nums[i]开头的最多n个,所以可以设dp[i][j]为i---j是不是Palindromic Substrings,并记忆化搜索。class Solution {public: int countSubstrings(str...原创 2018-04-13 12:57:12 · 123 阅读 · 0 评论