当前位置: 首页 > news >正文

代码随想录算法训练营 动态规划part06

一、完全背包

卡哥的总结,还挺全代码随想录 (programmercarl.com)

二、零钱兑换 II 

518. 零钱兑换 II - 力扣(LeetCode)

被选物品之间不需要满足特定关系,只需要选择物品,以达到「全局最优」或者「特定状态」即可。

同时硬币相当于我们的物品,每种硬币可以选择「无限次」,很自然的想到「完全背包」。

这时候可以将「完全背包」的状态定义搬过来进行“微调”:

定义 f[i][j]为考虑前 iii 件物品,凑成总和为 jjj 的方案数量。

为了方便初始化,我们一般让 f[0][x] 代表不考虑任何物品的情况。

因此我们有显而易见的初始化条件:f[0][0]=1,其余 f[0][x]=0。

代表当没有任何硬币的时候,存在凑成总和为 0 的方案数量为 1;凑成其他总和的方案不存在。

当「状态定义」与「基本初始化」有了之后,我们不失一般性的考虑 f[i][j] 该如何转移。

对于第 i 个硬币我们有两种决策方案:

不使用该硬币:
f[i−1][j]

使用该硬币:由于每个硬币可以被选择多次(容量允许的情况下),因此方案数量应当是选择「任意个」该硬币的方案总和:

class Solution {public int change(int cnt, int[] cs) {int n = cs.length;int[][] f = new int[n + 1][cnt + 1];f[0][0] = 1;for (int i = 1; i <= n; i++) {int val = cs[i - 1];for (int j = 0; j <= cnt; j++) {f[i][j] = f[i - 1][j];for (int k = 1; k * val <= j; k++) {f[i][j] += f[i - 1][j - k * val];  }}}return f[n][cnt];}
}

三、组合总和 Ⅳ  

377. 组合总和 Ⅳ - 力扣(LeetCode)

emmmmm看官方题解吧377. 组合总和 Ⅳ - 力扣(LeetCode)

http://www.lryc.cn/news/174527.html

相关文章:

  • 能跑通的mmdet3d版本
  • SD-MTSP:萤火虫算法(FA)求解单仓库多旅行商问题MATLAB(可更改数据集,旅行商的数量和起点)
  • bootstrapv4轮播图去除两侧阴影及线框的方法
  • python 自建kafka消息生成和消费小工具
  • Prim算法:经过图中所有节点的最短路径
  • Linux 信号捕捉函数 signal sigaction
  • StarRocks操作笔记
  • Linux的ls -ld命令产生的信息怎么看
  • Linux- 内存映射文件(Memory-Mapped File)
  • 李航老师《统计学习方法》第五章阅读笔记
  • iOS16新特性:实时活动-在锁屏界面实时更新APP消息 | 京东云技术团队
  • 使用 Elasticsearch、OpenAI 和 LangChain 进行语义搜索
  • NIFI集群_队列Queue中数据无法清空_清除队列数据报错_无法删除queue_解决_集群中机器交替重启删除---大数据之Nifi工作笔记0061
  • leetcode20. 有效的括号 [简单题]
  • ubuntu20.04下源码编译colmap
  • Jumpserver堡垒机
  • 第一百五十三回 如何实现滑动窗口
  • Oracle 12c自动化管理特性的新进展:自动备份、自动恢复和自动维护功能的优势|oracle 12c相对oralce 11g的新特性(3)
  • Redis——Jedis中hash类型使用
  • 肖sir__项目实战讲解__004
  • 数据库数据恢复-ORACLE常见故障有哪些?恢复数据的可能性高吗?
  • 合规性管理如何帮助产品团队按时交付?
  • 从平均数到排名算法
  • 如何使用ESP8266微控制器和Nextion显示器为Home Assistant展示温度传感器和互联网天气预报
  • 阻塞队列-生产者消费者模型
  • Vector Art - 矢量艺术
  • ruoyi-nbcio增加flowable流程待办消息的提醒,并提供右上角的红字数字提醒(一)
  • 数据结构:二叉树的基本概念
  • 利用Socks5代理IP加强跨界电商爬虫的网络安全
  • Spring学习笔记6 Bean的实例化方式