![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
动态规划
入门
Ye_QO
这个作者很懒,什么都没留下…
展开
-
Coins
POJ 1742思路多重部分和问题滚动数组见注释#include<iostream>#include<cstring>using namespace std;int main(){ int n,m,a[105],c[105],dp[100005];//dp数组记录的是第i种钱凑到j元剩余的个数 while(cin>>n>>m&&n&&m){ memset(dp,-1,sizeo原创 2021-03-31 21:43:51 · 60 阅读 · 0 评论 -
DP基础与及例题
分析有限集中的最值问题状态表示:f[i]表示一类相似元素的集合,其值为(max,min,count…)状态计算:f[i]=f[i-1]集合的最优解题型 一、01背包二、完全背包三、石子合并原创 2021-03-18 16:35:03 · 70 阅读 · 0 评论 -
最长公共子序列
最长公共子序列题目传送门分析状态表示集合f(i,j):所有a[1 , i]和b[1 , j]的公共子序列的集合属性:求最大值状态计算f(i,j)是以下4种情况的最大值公共子序列不包含a[i]和b[j]的集合 f(i-1,j-1)公共子序列不包含a[i],包含b[j]的集合 f(i-1,j)-f(i-1,j-1)公共子序列不包含b[j],包含a[i]的集合 f(i,j-1)- f(i-1,j-1)公共子序列包含a[i]和b[j]的集合 f(i-1,j-1)+..原创 2021-03-18 16:13:46 · 39 阅读 · 0 评论 -
石子合并
石子合并题目传送门分析状态表示集合f(i,j):所有将[i , j]合并到一堆的方案的集合属性:求最小值状态计算f(i,j)是以下j-i种情况的最小值左边的一堆有第i个左边的一堆有第i,i+1个左边的一堆有第i,i+1,i+2个……左边的一堆有第i,i+1,i+2,……,k,……个……左边的一堆有第i,i+1,i+2,……,j-1个不失一般性考虑左边的一堆是第i个到第k个(k<=j-1)希望的得到的是[i ,k]的最小值加上[k+1,j-1]的最大值状..原创 2021-03-18 15:45:54 · 44 阅读 · 0 评论 -
完全背包
完全背包问题有n种重量和价值分别为wi,vi的物品。从这些物品种挑选总重量不超过w的物品,求出挑选物品价值总和的最大值。每种物品可以多次挑选分析状态表示集合f(i,j):所有只从前i个物品种选,且总重量不超过w的方案的集合属性:求最大值状态计算f(i,j)是下面情况的最大值所有不选第i个物品的方案的集合所有选1个第i个物品的方案的集合所有选2个第i个物品的方案的集合……所有选k个第i个物品的方案的集合…………直到总重量大于w转移方程f(i,j) = max..原创 2021-03-18 02:35:23 · 46 阅读 · 0 评论 -
01背包
01背包问题有n个重量和价值分别为wi,vi的物品。从这些物品种挑选出总重量不超过w的物品,求所有挑选方案中价值总和的最大值。分析状态表示集合f(i,j):所有只考虑前i个物品,且总重量不超过j的选法的集合属性:求最大值状态计算f(i,j)时下面两种情况的最大值所有选择第i个物品的方案(前i-1个物品中选出总重量不超过w-wi的方案的集合)所有不选第i个物品的方案(前i-1个物品中选出总重量不超过w的方案的集合)状态转移方程f(i,j) = max( f(i-1,w)..原创 2021-03-18 01:40:42 · 125 阅读 · 0 评论