算法刷题 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];
}
相关推荐
I_LPL15 分钟前
day36 代码随想录算法训练营 动态规划专题4
java·算法·leetcode·动态规划·hot100
Mr YiRan15 分钟前
C++二义性,多态,纯虚函数和模版函数
java·jvm·c++
ab15151715 分钟前
2.24完成129、134、135
数据结构·算法
2301_8169978817 分钟前
虚拟DOM与Diff算法
前端·vue.js·算法
闻缺陷则喜何志丹17 分钟前
P8153 「PMOI-5」送分题/Yet Another Easy Strings Merging|普及+
c++·数学·算法·洛谷
tankeven20 分钟前
HJ102 字符统计
c++·算法
江西理工大学小杨23 分钟前
高性能 C++ 社交平台1:微服务架构设计
开发语言·c++·微服务
升讯威在线客服系统27 分钟前
从 GC 抖动到稳定低延迟:在升讯威客服系统中实践 Span 与 Memory 的高性能优化
java·javascript·python·算法·性能优化·php·swift
We་ct34 分钟前
LeetCode 199. 二叉树的右视图:层序遍历解题详解
前端·算法·leetcode·typescript·广度优先
孤独的追光者35 分钟前
MATLAB导出滤波器参数至ADSP中使用
算法·matlab