518. 零钱兑换 II -- 完全背包

2023-11-11

518. 零钱兑换 II

这道题其实就是一个完全背包问题,关于背包问题的相关文章见:

  1. 01背包问题 – 动态规划
  2. 完全背包问题

class CoinChange:
    """
    完全背包
    518. 零钱兑换 II
    https://leetcode.cn/problems/coin-change-ii/
    """
    def solution(self, amount: int, coins: List[int]) -> int:
        n = len(coins)
        #  dp[i][j]: 若只使⽤前 i 个物品(可以重复使⽤),当背包容量为 j 时,有 dp[i][j] 种⽅法可以装满背包。
        dp = [[0 for _ in range(amount+1)] for _ in range(n+1)]

        # base case
        for i in range(n + 1):
            dp[i][0] = 1

        for i in range(1, n+1):
            for j in range(1, amount+1):
                if j - coins[i-1] >= 0:
                    dp[i][j] = dp[i-1][j] + dp[i][j-coins[i-1]]
                else:
                    dp[i][j] = dp[i - 1][j]

        return dp[n][amount]

    def solution2(self, amount: int, coins: List[int]) -> int:
        """
        空间压缩,二维变一维
        :param amount:
        :param coins:
        :return:
        """
        n = len(coins)
        #  dp[j]: 当背包容量为 j 时,有 dp[j] 种⽅法可以装满背包。
        dp = [0 for _ in range(amount + 1)]

        # base case
        dp[0] = 1

        for i in range(n):
            # 这里只能从前往后正向遍历,因为要考虑重复使用的情况,区别在于这里 dp[i][j-coins[i-1]]
            # 当使用了coins[i]这枚硬币时,可重复多次使用,所以不是 dp[i-1][j-coins[i-1]]
            # dp[i][j] = dp[i-1][j] + dp[i][j-coins[i-1]]
            for j in range(1, amount + 1):
                if j - coins[i] >= 0:
                    dp[j] = dp[j] + dp[j - coins[i]]

        return dp[amount]


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

518. 零钱兑换 II -- 完全背包 的相关文章

  • 最简明扼要的 Systemd 教程,只需十分钟

    systemctl常用命令介绍 Systemctl是一个systemd工具 主要负责控制systemd系统和服务管理器 Systemd是一个系统管理守护进程 工具和库的集合 用于取代System V初始进程 Systemd的功能是用于集中管
  • 千里行始足下,小白们一起加油,终有一日进化为佬

    大家谁来一起学习哇 作为一个刚入坑的小白 作为我发表的第一篇博客 这篇文章我构思了许久 明年即将步入大二的殿堂 有点愧疚的却是我并没有学到一点东西 在接触到了变成这个有趣的玩意儿以后 我就对此产生了莫大的兴趣 当然 但愿不是半途而废草草收场

随机推荐

  • OpenCV+VS2019打开和关闭电脑摄像头

    关于OpenCV和VS2019的配置 请参考博客以前的连接 OpenCV中主要使用videocapture来打开和关闭摄像头 https docs opencv org master d8 dfe classcv 1 1VideoCaptu
  • MOS管符号特性规则

    MOS管符号 MOS管的英文全称叫MOSFET Metal Oxide Semiconductor Field Effect Transistor 即金属氧化物半导体型场效应管 属于场效应管中的绝缘栅型 因此 MOS管有时被称为绝缘栅场效应
  • Mybatis手动提交事务

    package com stylefeng guns modular system dao import java util List import java util Map import org apache ibatis annota
  • 找不到类型,或者不是编译时常数:RadioButtonGroup

    此类异常 都是由于我们要使用的组件包的路径 开发工具没给我们提供 一种做法是在组件面板中 ctrl F7 将需要使用的组件拖入到库中 或者拖到舞台后 删除便可以使用 另一种做法是在开发工具中 在 编辑 gt 首选参数 中 进行ActionS
  • Vue3封装函数式组件

    MyDialog vue
  • CSS中margin属性详解

    margin属性概述 margin是CSS层叠样式表中用来规定围绕在元素边框周围空白区域范围的属性 该接受任何长度单位 可以是像素 英寸 毫米或 em 相关属性 margin 可以单独改变元素的上 下 左 右边距 也可以一次改变所有的属性
  • qt.qpa.plugin: Could not load the Qt platform plugin “xcb“ in ““ even though it was found.(解决办法)

    一 报错信息 环境 ubuntu16 04 报错 在以安装pyqt5的情况下 qt qpa plugin Could not load the Qt platform plugin xcb in even though it was fou
  • 【译】用 Rust 实现 csv 解析-part4

    Rust and CSV parsing 译文 用 Rust 实现 csv 解析 part4 原文链接 https blog burntsushi net csv 原文作者 BurntSushi 译文来自 https github com
  • 计操理论课04 -- openEuler实验第三章进程管理

    文章目录 任务1 创建并运行内核线程 任务要求 任务代码 任务截图 任务2 打印输出当前系统 CPU 负载情况 任务要求 任务代码 任务截图 任务3 打印输出当前处于运行状态的进程的 PID 和名字 任务要求 任务代码 任务截图 任务4 使
  • 区块链基本概念学习笔记

    文章目录 区块链产生与发展历史 区块链的场景属性 区块链定义 区块链的特点 区块链加密货币的特点 区块链核心技术 区块链的核心概念 区块链分类 区块链架构特点 区块链产生与发展历史 区块链的场景属性 区块链定义 区块链是一种点对点传输协议
  • 交叉编译并移植Android工具adb与adbd过程

    Android tool 移植adb与adbd的记录 近期研发一个新功能 需要用到Android的adbd服务 如是尝试着交叉编译adbd 由于目前的使用场景是PC端通过usb连接到开发板上 利用adb push pull 进行文件的传输
  • 一个浮点数跨平台产生的问题

    感谢网友唐磊 微博 唐磊 name 投稿 本文原文在唐磊的博客上 原文地址 原文分析还不够好 而且可能对人有误导 所以 我对原文做了很多修改 并加了Linux下的内容 浮点数是一个很复杂的事情 希望这篇文章有助于大家了解浮点数与其相关的C
  • LeetCode【129】求根到叶子节点数字之和

    题目 给定一个二叉树 它的每个结点都存放一个 0 9 的数字 每条从根到叶子节点的路径都代表一个数字 例如 从根到叶子节点路径 1 gt 2 gt 3 代表数字 123 计算从根到叶子节点生成的所有数字之和 说明 叶子节点是指没有子节点的节
  • 电子游戏,一个价值千亿美元的机会

    如果元宇宙确实是互联网的继承者 那么说它的 前辈 来自电子游戏行业似乎很奇怪 毕竟 到目前为止 互联网与电子游戏行业的发展轨迹是完全不同的 互联网起源于政府的研究实验室和大学 后来 它逐渐扩展到企业 然后是中小企业 最后才是消费者 娱乐业可
  • 数据库事务(Database Transaction)

    数据库事务 Database Transaction 数据库事务 Database Transaction 是由一系列对系统中数据进行访问与更新的操作所组成的一个程序执行逻辑单元 一个数据库事务通常包含了一个序列的对数据库的读 写操作 它的
  • 12个Flex常用功能代码

    12个Flex常用功能代码 1 复制内容到系统剪贴板 1 System setClipboard strContent 2 复制一个ArrayCollection 1 dummy solution well it works 2 var b
  • ubuntu下配置vim

    1 安装vim sudo apt get install vim full2 配置文件的位置在目录 etc vim下面 有个名为vimrc的文件 这是系统中公共的vim配置文件 对所有用户都有效 3 设置语法高亮显示1 打开vimrc 添加
  • DLNA介绍(包括UPnP,2011/6/20 更新)

    这部分的内容大多来源于网络及官方文档 按照自己的翻译理解整理所成 东西比较多 从头慢慢看还是可以懂个大概的 目录 一 DNLA的建立 二 DLNA的成员 三 DLNA标准的制定 四 DLNA的设备 五 DLNA的架构 六 云时代的数字家庭
  • Python中列表、字典、元组、集合数据结构整理

    这篇文章主要介绍了Python中列表 字典 元组 集合数据结构整理 较为详细的分析了这几类数据结构的具体用法及相关技巧 需要的朋友可以参考下 本文详细归纳整理了Python中列表 字典 元组 集合数据结构 分享给大家供大家参考 具体分析如下
  • 518. 零钱兑换 II -- 完全背包

    518 零钱兑换 II 这道题其实就是一个完全背包问题 关于背包问题的相关文章见 01背包问题 动态规划 完全背包问题 class CoinChange 完全背包 518 零钱兑换 II https leetcode cn problems