不想水,可是三天学到的东西很少,代码还是那几个。感觉除了老师讲的内容可以稍微理解,自己可以探索的东西真实少之又少。
从数塔一题多解得出:dp算法可以双向推导,如果要给出求解路径优先选择逆向推导,可以加上三维数组的第三维标记路径然后正向输出。
正推与反推核心算法(转移方程)差别不大,但实现过程千差万别,考虑问题时应该多方面考虑。如果可能,今后也可尝试一题多解,可是时间不太够。
01背包问题
f[i][v]表示前i件物品恰好放入一个容量为v的背包可以获得的最大价值,状态转移方程是:f[i]
[v]=max{f[i-1][v],f[i-1][v-w[i]]+c[i]}。
而完全背包问题最简洁的解决方案是一维数组。