码迷,mamicode.com
首页 > 其他好文 > 详细

动态规划--数轴动态规划问题

时间:2020-06-19 20:43:27      阅读:78      评论:0      收藏:0      [点我收藏+]

标签:代码   str   图片   mamicode   The   alt   else   lazy   lse   

【01背包问题】

技术图片

 

1.如何用子问题表示

P[1…n , C]表示总问题

dp[ i ][ j ]表示P[ i…n,j ]的最大价值

则总问题P[1…n , C] = max{ P[2…n , C - v1 ] , P[ 2…n , C] }

2. 优化子结构和重叠子问题

3. 递归表达式

dp[ i ][ j ] = max{ dp[ i + 1][ j - wi ] + vi , dp[ i + 1][ j ]}(选与不选)

递归终点:dp[ n ] [ j ] = vn (j > wn) ; dp[ n ][ j ] = 0(j < wn)

4.伪代码

For j=0 To min(wn-1 , C)

            Do dp[ n ][ j ] = 0;

For j=wn To C

           Do dp[ n ][ j ] = vn;

For i = n-1 To 2

          Do For j = 0 To min(wi-1 , C)

                     Do dp[ i ][ j ] = m[ i+1 ][ j ];

                For j = wi To C

                     Do dp[ i ][ j ] = max{ dp[ i + 1][ j - wi ] + vi , dp[ i + 1][ j ]}

if C < w1

Then dp[ 1 ][ C ] = dp[ 2 ][ C ]

Else dp[ 1 ][ C ] = max{ dp[ 2 ][ C - w1 ] + v1 , dp[ 2 ][ C ] }

 【购物问题】

动态规划--数轴动态规划问题

标签:代码   str   图片   mamicode   The   alt   else   lazy   lse   

原文地址:https://www.cnblogs.com/duanshuai/p/13166258.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!