完全背包
先遍历物品:横向更新
for i in range(n):
for j in range(weight[i], v + 1):
dp[j] = max(dp[j], dp[j - weight[i]] + value[i])
先遍历背包容量:纵向更新
for j in range(v + 1):
for i in range(n):
if j - weight[i] >= 0:
dp[j] = max(dp[j], dp[j - weight[i]] + value[i])
零钱兑换II(组合问题)
dp[j] 表示:填满j(包括j)这么大容积的包,有dp[j]种方法
先遍历物品后遍历背包
排列问题
先遍历背包后遍历物品