洛谷p1478-陶陶摘苹果(升级版)
题解一:
可以使用动态规划来解决此类问题。
1 |
|
其中的动态转移方程,如果能够取苹果的话,判断:
dp[i][j]=dp[i-1][j-yi[i]]+1>dp[i][j]?dp[i-1][j-yi[i]]+1:dp[i][j]
首先:
取苹果是:dp[i-1][j-yi[i]]+1。
取苹果了,那么力气就减少对应摘这个苹果需要消耗的体力,即j-yi[i]。
空间也减小了,即i-1(因为题目中没有说不同苹果所占空间不一样,所以每个苹果人为占1空间)。
取苹果了,那么现在的背包中的苹果的总价值也要加一,即dp[][]+1(因为题目中只问了能取多少个苹果,所以,就相当于每个苹果的价值为都为1)。
不取苹果是:dp[i][j],即不需要更新这个数组。
其中,不仅枚举考虑每一个苹果的大小,还枚举了背包的大小,这是为什么呢???