码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 代码随想录day44:动态规划part06


    完全背包理论

    遍历顺序:

    • 0,1背包的一维dp[j],一定是外层嵌套物品,内层背包容量倒序
    • 完全背包的一维dp[j],嵌套顺序无所谓,背包容量要正序
      但如果题目稍稍有点变化,就会体现在遍历顺序上

      518.零钱兑换

      钱币数量不限,所以完全背包问题,但是不是求得背包装的最大价值,而是组合数。
      注意:组合数不等于排列数
      动规五部曲:1.dp[j]凑成金额j的货币数
      2.递推公式dp[j]+=dp[j-coin[i]]跟之前组合数的公式一样
      3.初始化:首先dp[0]一定要为1,dp[0] = 1是 递归公式的基础。如果dp[0] = 0 的话,后面所有推导出来的值都是0了。下标非0的dp[j]初始化为0,这样累计加dp[j - coins[i]]的时候才不会影响真正的dp[j]。
      4.遍历顺序:
      由于这道题求得是组合数,顺序不同但是集合相同是同一种情况。所以遍历顺序不能像单纯的完全背包物品和背包容量可以无所谓嵌套内外。
      而是应该外层物品,内层背包容量:
      注意此表格是用二维展示一维每次物品从0到2放入背包的情况。这时候,背包放入物品没有顺序
    dp[j]背包容量012345
    物品0111111
    物品1002233
    物品2000004
        int change(int amount, vector<int>& coins) {
            vector<int> dp(amount+1,0);
            dp[0]=1;
            for(int i=0;i<coins.size();i++){
                for(int j=coins[i];j<=amount;j++){
                    dp[j]+=dp[j-coins[i]];
                }
            }
            return dp[amount];
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    如果外层背包容量,内层物品嵌套,背包容量为1时,可以放下物体0,有1种。
    背包容量为2时,可以放下物品0,1,有两种:1,1和2
    背包容量为3时,dp[3]=dp[2]+dp1 +(在1里放入2)出现重复

    dp[j]背包容量012345
    110000
    002350
    000009

    377.组合总和四

    class Solution {
    public:
        int combinationSum4(vector<int>& nums, int target) {
            int sum=0;
            /*
            for(int i=0;i
            vector<int> dp(target+1,0);
            dp[0]=1;
            for(int j=0;j<=target;j++){
                for(int i=0;i<nums.size();i++){
                    if(j>=nums[i] && dp[j] < INT_MAX - dp[j - nums[i]]) dp[j]+=dp[j-nums[i]];
                }
            }
            return dp[target];
        }
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
  • 相关阅读:
    【设计模式】第2节:七大设计原则
    JVM学习——4——Java Memory Model ( JMM ) java内存模型
    IP协议:连接你我,掌握互联网的关键
    第4章 配置集成第3方log4net日志中间件
    Java设计模式 | 饿汉&懒汉单例设计模式
    微软官方推出的四款工具,太实用了,值得收藏
    深度学习应用篇-计算机视觉-图像分类[2]:LeNet、AlexNet、VGG、GoogleNet、DarkNet模型结构、实现、模型特点详细介绍
    【2022杭电多校5 1012题 Buy Figurines】STL的运用
    构造shiro poc
    SpringBoot + Dubbo + zookeeper实现
  • 原文地址:https://blog.csdn.net/qq_45789731/article/details/133123586
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号