动态规划问题

动态规划的核心思想是将大问题化为若干小问题来解决,看了一些博客一般会用递归来解,但是不管是递归还是递推都是这种算法表现的形式,研究了一位大佬做的一道题发现很巧妙。

某小红薯在小红书的活动中抽奖中了一定价值的薯券,这些薯券可以用来购买一批商品,求有多少种购买组合。其中一件商品可以买多件。

输 入:薯券金额、商品分别价格
输出 :组合数
例子:10 [2,3,5]
他的题解:
            dp[0]=1;
            for (int i : arr) {                    //arr为商品价格数组
                for (int j = i; j <= totalPrice; j++) {       //totalPrice为薯券值
                    dp[j]+=dp[j-i];
                }
            }

dp[j]为薯券为j时的组合数,可以说十分的巧妙了

原文地址:https://www.cnblogs.com/freven/p/13532742.html