
dp
文章平均质量分 71
faze clan _Niko
这个作者很懒,什么都没留下…
展开
-
完全背包问题解法
前提:读者已经会背包问题的一维解法O(n^3)的复杂度的算法 实质上就是对能拿多少次进行一个枚举,这里面指的就是k的个数 #include<iostream> using namespace std; const int N = 1005; int f[N]; int v[N],w[N]; int main() { int n,m; cin>>n>>m; for(int i=1; i<=n; i++) cin>...原创 2020-07-23 01:07:01 · 233 阅读 · 0 评论 -
01背包问题一维与二维解法
算法思路 f[i][j]:表示的是只看前i个物品里面,体积为j种最大的价值 那就分为两种,拿和不拿 1.f[i][j]=f[i-1][j] 你不拿的情况和f[i-1][j]一致 2.f[i][j]=max(f[i][j],f[i-1][j-v[i]]+w[i]) 从小到大依次计算即可 #include<iostream> #include<algorithm> #include<cstring> using namespace std; const int...原创 2020-07-23 00:59:03 · 334 阅读 · 0 评论 -
LIS(最长递增子序列)的动态规划算法O(n*n)
LIS 最长递增子序列 点击此处看作者参考的博客 定义:从一个序列中选出一段长度最长可以不连续的且一定递增的子序列 例如 A 4 5 7 1 3 9 最长子序列为 4 5 7 9 定义dp[i]为:从左至右从序列A中选定 最后一位为A[i]的子序列,在这些子序列中,连续递增区间最大的值 我们先用人脑自然的方法去写出每一位数对应的dp[i] dp[1]=1; dp[2]=2; dp[3]=3; dp[4]=1; dp[5]=2; ...原创 2020-07-07 06:22:10 · 192 阅读 · 0 评论