讲背包之前,我先说一下DP。
DP即动态规划,它的根本是暴力,但是是有思想的暴力,而实现方式是递推,DP大部分是逆推,作为我的“本命算法”,是非常简单的。
前面说到,DP是有思想的暴力,暴力有手就行,所以DP的重点就在这个思想上,DP的思想可以分为两部分:
第一部分是状态的表示,DP是一定要用一个数组存的,不管是几维DP,都要一个DP数组存下来,数组名索性就叫DP[]吧,DP常用来求最大值或最小值。以背包问题举例,背包问题一般都是两维DP,DP[i][j]表示当前重量为j,取第i个物品时取得的价值。
第二部分就是DP最重要的一点——状态转移,DP必须有一个状态转移方程,也就是当前状态是从哪些状态由哪些方法转移过来的,可以说状态转移方程是DP的灵魂。
背包问题就是DP的一个基础题型,甚至可以说是DP的模板题,它无非就是建模,转移就完事了。
背包问题有01背包、完全背包、多重背包、分组背包、混合背包等等。
关于具体背包问题的思路及代码,第二篇中会有讲解。
标签:状态,背包,暴力,基础,问题,转移,DP 来源: https://www.cnblogs.com/jnlc-yab0716/p/16479375.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。