
动态规划
文章平均质量分 75
striner
这个作者很懒,什么都没留下…
展开
-
经典算法之线性dp LIS
动态规划一共分为:线性dp,背包问题,区间dp,数位dp,状压dp,树形dp,概率dp七种,今天就先来讲讲dp的第一种形式 -- 线性dp吧. 这里,我以求最长上升子序列(LIS)的长度为例. 问题: 给你一个长度为n的序列,a[1],a[2],a[3]......a[n],求其最长上升子序列长度。 最长上升子序列:递增的可间断的子序列,比如序列 1,3,-3,5,-2,6,其最长原创 2018-01-24 18:55:13 · 533 阅读 · 0 评论 -
经典算法之01背包
背包问题 一小偷偷东西 商场内有N件货品,每件货物重为wi,自身为价值vi 求小偷背包内所能装的东西的最大价值 这里假设一共有5件货品,重量分别为:2 3 4 5 9, 对应的货品价值分别为: 3 4 5 8 10. 代码实现: public class Main { public static void main(String[]原创 2017-12-25 21:33:34 · 691 阅读 · 0 评论 -
经典算法之博弈论 取球博弈
问题描述: 取球博弈.局面上有一堆球,二人博弈,每人一次只能取1,3,7或者8个球.要求输出局面有n个球时的胜负情况. 解题思路: 这里我提供两种题解,一种是纯递归求解,但纯递归CPU消耗过大,后面我还会提供动态规划+缓存的题解方法. 实现方式一: *纯递归解题, 由于纯递归对CPU消耗过大,这里我以1到50个球的局面情况为例 public class原创 2018-04-01 18:51:11 · 2475 阅读 · 1 评论