这题是用四维过的。dp[i][j][h][w],i,j表示蛋糕的左上角,h,w代表高和宽。在dp前还要统计一下每个子蛋糕方块中樱桃的数目。状态转移方程是这样的(考虑行,列两种切法)
在[i][j][h][w]这块蛋糕中没有樱桃,则
dp[i][j][h][w]=0 否则
dp[i][j][h][w]=min{
dp[i][j][h][w-w0]+dp[i][j+w0][h][j-w0]+h
(当两块蛋糕都有樱桃时才加h)
;dp[i][j][h-h0][w]+dp[i+h0][j][h-h0][w]+w
(当两块蛋糕都有樱桃时才加w)
}
在[i][j][h][w]这块蛋糕中没有樱桃,则
dp[i][j][h][w]=0 否则
dp[i][j][h][w]=min{
dp[i][j][h][w-w0]+dp[i][j+w0][h][j-w0]+h
(当两块蛋糕都有樱桃时才加h)
;dp[i][j][h-h0][w]+dp[i+h0][j][h-h0][w]+w
(当两块蛋糕都有樱桃时才加w)
}
本文介绍了一种使用四维动态规划解决特定问题的方法。通过定义状态dp[i][j][h][w]来表示从(i, j)位置开始,高度为h、宽度为w的蛋糕的最大得分,并详细阐述了状态转移方程。
662

被折叠的 条评论
为什么被折叠?



