算法刷题 DAY44

518.零钱兑换II

cpp 复制代码
int change(int amount, int* coins, int coinsSize) {

    int dp[2000000]={0};
    dp[0]=1;

    for(int i=0;i<coinsSize;i++){
        for(int j=coins[i];j<=amount;j++){//完全背包→正序
            dp[j]+=dp[j-coins[i]];
        }
    }
    
    return dp[amount];
}

377.组合总和IV

cpp 复制代码
int combinationSum4(int* nums, int numsSize, int target) {

    int dp[2000000] = {0};
    dp[0] = 1;

    for (int j = 1; j <= target; j++) {//j从1开始

        for (int i = 0; i < numsSize; i++) { //完全背包→正序

            if (nums[i] <= j&&(dp[j]<INT_MAX-dp[j-nums[i]])) {//不能写成dp[j]+dp[j-nums[i]]<INT_MAX:左侧相加直接溢出报错,故使得判断条件无意义
            //判断条件不能放在for那行会造成栈溢出,且会截断for循环
            //C++测试用例有两个数相加超过int的数据,所以需要在if里加上dp[j- nums[i]]+dp[j] < INT_MAX  
                dp[j] += dp[j - nums[i]];
            }
        }
    }

    return dp[target];
}
相关推荐
import_random8 分钟前
[机器学习]xgboost的2种使用方式
算法
橘颂TA35 分钟前
【剑斩OFFER】算法的暴力美学——只出现一次的数字 ||
算法·leetcode·动态规划
口袋物联41 分钟前
设计模式之适配器模式在 C 语言中的应用(含 Linux 内核实例)
c语言·设计模式·适配器模式
码力码力我爱你1 小时前
Harmony OS C++实战
开发语言·c++
Vect__1 小时前
别再只懂 C++98!C++11 这7个核心特性,直接拉开你与普通开发者的差距
c++
想唱rap1 小时前
C++ map和set
linux·运维·服务器·开发语言·c++·算法
!停2 小时前
函数递归的应用
c语言
小欣加油3 小时前
leetcode 1018 可被5整除的二进制前缀
数据结构·c++·算法·leetcode·职场和发展
无敌最俊朗@3 小时前
链表-力扣hot100-随机链表的复制138
数据结构·leetcode·链表