leetcode 322. 零钱兑换

leetcode 322. 零钱兑换_第1张图片

         本题属于完全背包问题,但要求最少的硬币个数。于是设定dp数组的含义dp[i]:总金额为i时,能凑成i的最少硬币个数。  需要注意初始化dp数组时,除0以外的其他地方需要初始化为INT_MAX以保证在递推过程中能被正确的覆盖。  

        代码如下:

class Solution {
public:
    int coinChange(vector& coins, int amount) {
        vector dp(amount+1,INT_MAX);
        dp[0] = 0;
        for(int i=0; i

        ps:本题由于求得是硬币最小个数,那么钱币有顺序和没有顺序都可以,都不影响钱币的最小个数。所以本题并不强调集合是组合还是排列,先遍历物品和背包都可以

你可能感兴趣的:(leetcode专栏,leetcode,算法,职场和发展,c++,数据结构)