POJ动态规划(DP)
文章平均质量分 64
WWL919618308
这个作者很懒,什么都没留下…
展开
-
0-1背包问题
问题描述: 给了n种物品和一个背包。物品的重量的W[i](weight),价V[i](value),背包容量为c(capacity),问应该如何选择放入背包中的物品,使得装入背包的物品总价值最大。 每个物品只有两种可能的选择,放或者不放,所以称为0-1背包问题, 即要找到一个数组(x1,x2,……,Xn),x[i]∈{0,1},不放就是0,放入就是1 要求就是, ∑x[i]*w[i]<原创 2013-06-13 15:40:39 · 595 阅读 · 0 评论 -
简单DP之二维背包问题
3-4 二维0-1 背包 给定n种物品和一背包。物品i的重量是wi,体积是bi,其价值为vi,背包的容量为C,容积为D。问应如何选择装入背包中的物品,使得装入背包中物品的总价值最大?在选择装入背包的物品时,对每种物品i只有两种选择,即装入背包或者不装入背包。不能将物品i装入背包多次,也不能只装入部分的物品i。试设计一个解此问题的动态规划算法,并分析算法的计算复杂性。 和0-1原创 2013-06-13 15:40:45 · 4744 阅读 · 0 评论 -
DP之最基本的求最长公共子序列
最近脑抽,又写了遍求最长公共子序列的问题…… 0 i=0,j =0 c[i][j]= c[i-1][j-1]+1 x[i]= y[j] MAX(c[i][j-1],c[i-1][j]} x[i]≠y[j] x[i]代表第一个序列:x[1]到x[i] y[j]代表第二个序列: y[j]到y[j] c[i][原创 2013-06-13 15:40:35 · 483 阅读 · 0 评论 -
简单DP之最少硬币问题(多重背包问…
最少硬币问题 问题描述:设有n种不同面值的硬币,各硬币的面值存在于数组T[1:n]中。现要用这些面值的硬币来找钱。可以使用的各种面值的硬币个数存于数组Coins[1:n]中。对任意钱数0£m£20001,设计一个最少硬币找钱m的方法。 算法设计:对于给定的1£n£10 ,硬币面值数组T和可以使用的各种面值的硬币数组Coins,以及钱数m, 0£m£20001,计算找钱m的最少硬币数。 数据输原创 2013-06-13 15:40:41 · 881 阅读 · 0 评论 -
DP之简单的求最大字段和问题
用DP的方式处理最大字段和问题,显然是很有效率的O(n)的时间复制度 设b[j]: 第1到第j个数中,从第i个数一直加到第j个数的和的最大值。就是从a[i]+a[i+1]+…+a[j]连续相加 a: -2 11 -4 13 -5 -2 b= -2 11 7 20 15 13 如果b (代码中没处理,需要的话开始判定一下就行) 然后,最大字段和的其实就是b中最大的数据 求这个序列的话原创 2013-06-13 15:40:37 · 596 阅读 · 0 评论 -
DP之一般背包问题
(⊙o⊙)…,不打算发的,因为思路就是将多重背包转成0-1背包解决。比较水。 就是0-1背包的代码简化了不少~按照课本讲的代码方式去写确实很坑…… //x[i]是物品i的个数,a[i],c[i]依次为质量,价值,容量为n 然后这次处理和上一个的区别就是dp[i][j]代表的意义略有不同,汗,其实也是一个意思 此处dp[i][j]代表,容量为j,物品从1->i物品获得的最优解 for(i原创 2013-06-13 15:40:43 · 568 阅读 · 0 评论