dp循环顺序对更新的影响(8.14测试)

本文深入探讨了使用动态规划(DP)解决T4硬币值子集组合问题的方法,强调了在循环顺序上选择从大到小的重要性,避免重复使用物品,以确保每个状态只被“重复利用”一次。通过实例演示了如何正确地应用DP算法,并解释了在实际应用中考虑使用次数限制和转移条件限制的重要性。

T4硬币值子集的子集组合情况,dp[i][j]表示子集和为i中能否表示出j,在for的时候要注意最外层循环物品1-n,里面循环和全都要从大到小倒着for,原因是我们不可以使用本层更新的信息来更新本层待更新的东西。举例,在第一件物品时,dp[10][5]显然是无法更新的,而如果我们从小到大for,会在更新了dp[5][0]以后更新dp[10][5],相当于将这件物品使用两次。

而这大概也就是01背包和完全背包循环顺序不同的原因,如果从大到小循环大的值不会因为本层小的值而更新,相当于只用一次,而从小到大则会先更新小的再用小的更新大的,相当于物品使用多次。

在dp中我们需要注意使用次数的限制或者转移条件的限制,来决定一个状态能否被“重复利用”,也就是以其为跳板,将能更新的全部更新。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值