算法刷题 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];
}
相关推荐
Via_Neo3 分钟前
日期问题和日期常用API
数据结构·算法
_饭团18 分钟前
指针核心知识:5篇系统梳理2
c语言·笔记·学习·leetcode·面试·改行学it
罗湖老棍子20 分钟前
Maximum Subarray Sum II最大连续区间和(CSES- P1644)
算法·滑动窗口·单调队列
阿贾克斯的黎明37 分钟前
Drogon 框架完全指南:C++ 后端开发的新选择
开发语言·c++
凯子坚持 c37 分钟前
基于C++构建DeepSeek大模型推理SDK:从架构设计到工程落地
java·数据库·c++
郝学胜-神的一滴38 分钟前
C++备忘录模式:优雅实现对象状态保存与恢复
开发语言·c++·程序人生·备忘录模式
星河耀银海38 分钟前
C++ 异常处理机制:异常捕获、自定义异常与实战应用
android·java·c++
小年糕是糕手40 分钟前
【C++】string类(三)
开发语言·数据结构·c++·程序人生·算法
星河耀银海40 分钟前
C++ 继承:面向对象的代码复用核心机制
开发语言·c++
西装没钱买1 小时前
C语言组播的使用
c语言·开发语言·udp·组播·组播绑定网卡