算法刷题 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];
}
相关推荐
花间相见1 分钟前
【LeetCode01】—— 无重复字符的最长子串:滑动窗口经典题详解
python·算法·leetcode
wabs6666 分钟前
关于动态规划【力扣96.不同的二叉搜索树的递推公式怎么理解?】
算法·动态规划
Yiyaoshujuku12 分钟前
化合物数据集API接口(数据结构及样例)
java·网络·数据结构
QiLinkOS13 分钟前
极客与商业思维的融合实践(1)
c语言·数据库·c++·人工智能·算法·开源协议
fu的博客16 分钟前
【数据结构16】图:基于邻接矩阵、邻接表实现DFS/BFS
数据结构·算法
阿正的梦工坊22 分钟前
【Rust】17-Send、Sync 与并发安全抽象
算法·安全·rust
plainGeekDev25 分钟前
算法刷题笔记:一维DP没那么难,状态想清楚就赢了一半
java·算法·面试
菩提树下的凡夫32 分钟前
新版OpenCV5.0在ONNX模型的推理应用
opencv·算法
坚果派·白晓明36 分钟前
鸿蒙PC】libuv适配:AtomCode Skills一站式指南
c语言·c++·华为·ai编程·harmonyos·atomcode
c++之路39 分钟前
CMake 系列教程(五):进阶技巧
c语言·开发语言·c++