![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划
文章平均质量分 70
snowwwwi
这个作者很懒,什么都没留下…
展开
-
acm总结——0-1背包(动态规划)
【01背包问题描述】 给定N件物品和一个容量为为C的背包,第i件物品的重量为w[i],价值为是v[i],每件物品只能使用一次,求解将哪些物品装入背包后物品价值的总和最大? 【问题分析】 对于每种物品其实只有两种状态——取或者不取,并且同一件物品不能装入多次。使用暴力解法去遍历每种情况将会是一个O()的时间复杂度,n代表物品的数量。 这里的时间复杂度是指数级别的,所以需要用动态规划来进行优化。 【解决办法】 1.二维dp数组 【分析】 我们以F[i, j]表示从前i个物品中选出了总体积为j的物原创 2022-03-11 11:15:46 · 1793 阅读 · 0 评论 -
acm总结——悬线法(动态规划)
悬线法的作用 解决最大子矩阵问题,时间复杂度为O(nm)。 原理 对于一个n*m的矩阵,其中有若干个障碍,我们需要找到一个没有包含障碍的最大子矩阵。我们可以以一个点为起点,向上延伸出一条竖线并让其左右移动,直至移动到障碍或者矩阵的边界,进而就可以确认出一个矩阵,再遍历每一个点就能找到最大子矩阵。 操作 首先我们可以定义一个二维数组h[i][j]用于表示悬线的长度。对于每一个点,倘若他正上方的点满足题目所要求的条件(like:题目要求求没有障碍的最大子矩阵,那么满足条件便为无障碍的点),那么这一个点原创 2022-03-13 14:35:17 · 1534 阅读 · 0 评论