首先,动态规划的最基本要求在于无后效性——即结果态之和之前某态有关,并且对于该之前态我们并不关心它到底是怎么来的——和n到n+1的跳跃一样,它也是依赖转移方程得来。
比如0-1揹包:我们只要永远依赖dp i j=max(dp i-1 j,dp i-1 j-wi +vi)这个转移方程即可,并不在乎它具体细节。
从0-1揹包衍生出:完全揹包,多重揹包,满揹包问题等。
完全揹包:每一件物品的数量无穷,请问如何装载?
dp i j=max(dp i-1 j,dp i j-wi+vi)
多重揹包:每一件物品都有确定的数量,请问如何装载?
dp i j=max(dp i-1 j,dp i-1 j-k*wi+k*vi)(k从1到numi依次循环,找最大的带入)
满揹包:我们需要把初始的第一行数组设置为负无穷大。
day1的两道dp的两道练习题目:
1,hdu2084数塔
2,hdu4054NumberString
新结论:用直线亦或是折线划分平面时,我们把新增的点的数量加1即是新增的面的数量。
新技术:对二维数组初始化时:int num[3][3]={{1},{1,2},{1,2,3}}