改为:一步一个台阶,两个台阶,三个台阶,…….,直到 m个台阶。问有多少种不同的方法可以爬到楼顶呢?
    1阶,2阶,…. m阶就是物品,楼顶就是背包。
    每一阶可以重复使用,例如跳了1阶,还可以继续跳1阶。
    问跳到楼顶有几种方法其实就是问装满背包有几种方法。
    此时大家应该发现这就是一个完全背包问题了!

    1. class Solution {
    2. public:
    3. int climbStairs(int n) {
    4. vector<int> dp(n + 1, 0);
    5. dp[0] = 1;
    6. for (int i = 1; i <= n; i++) { // 遍历背包
    7. for (int j = 1; j <= m; j++) { // 遍历物品
    8. if (i - j >= 0) dp[i] += dp[i - j];
    9. }
    10. }
    11. return dp[n];
    12. }
    13. };