DP基础——背包问题(上)

讲背包之前,我先说一下DP。

DP即动态规划,它的根本是暴力,但是是有思想的暴力,而实现方式是递推,DP大部分是逆推,作为我的“本命算法”,是非常简单的。

前面说到,DP是有思想的暴力,暴力有手就行,所以DP的重点就在这个思想上,DP的思想可以分为两部分:

  第一部分是状态的表示,DP是一定要用一个数组存的,不管是几维DP,都要一个DP数组存下来,数组名索性就叫DP[]吧,DP常用来求最大值或最小值。以背包问题举例,背包问题一般都是两维DP,DP[i][j]表示当前重量为j,取第i个物品时取得的价值。

  第二部分就是DP最重要的一点——状态转移,DP必须有一个状态转移方程,也就是当前状态是从哪些状态由哪些方法转移过来的,可以说状态转移方程是DP的灵魂。

背包问题就是DP的一个基础题型,甚至可以说是DP的模板题,它无非就是建模,转移就完事了。

背包问题有01背包、完全背包、多重背包、分组背包、混合背包等等。

关于具体背包问题的思路及代码,第二篇中会有讲解。

posted @   TainityAnle  阅读(74)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
点击右上角即可分享
微信分享提示