01背包
关于dp数组的遍历顺序问题分为两种
当dp数组的下标i表示物品,j表示背包大小时,使用正序或倒序皆可。第i行dp数组的值是根据i-1行算出来的,第i行数据互不影响。
当dp数组的下标全部表示背包大小时,只能使用倒序。dp数组的值根据本行算出来的,如果在计算第j列前,j-nums[i]列已经更新过,那么再算第j列会导致重复添加物品。所以使用倒序是确保在计算第j列时第j-nums[i]列未统计第i个物品。
所以dp二维数组改一维数组本质上是将dp二维数组的每一行的结果更新到第一行上。