背包问题遍历顺序总结

1,092 阅读1分钟

遍历顺序

  • 01背包
    • 二维DP数组:先遍历物品,再遍历背包容量(从小到大)。或者反过来。都可以。先遍历物品更容易理解。
    • 一维DP数组:必须先遍历物品,再从大到小遍历背包容量。
  • 完全背包
    • 换零钱的最少硬币数:
      • 二维DP数组:先遍历硬币,再遍历钱数(从小到大)。或者反过来。都可以。先遍历硬币更容易理解。
      • 一维DP数组:先遍历硬币,再遍历钱数(从小到大)。或者反过来。都可以。先遍历硬币更容易理解。
    • 换零钱的方法数(就是求组合数):先遍历硬币,再遍历钱数(从小到大)。
    • 求排列总数:先遍历背包容量(从小到大,从索引0或1开始),再遍历物品(从索引0开始)。