算法中的背包问题

背包问题

背包问题 是经典的动态规划问题,它一共有 9 个分类:

01 背包问题

完全背包问题

多重背包问题

混合背包问题

二维费用背包问题

分组背包问题

背包问题求方案数

求背包问题的方案

有依赖的背包问题

01背包问题

完全背包问题

322.零钱兑换

给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。

计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。

你可以认为每种硬币的数量是无限的。

python 复制代码
class Solution:
    def coinChange(self, coins: List[int], amount: int) -> int:
        dp = [amount+1] * (amount+1)
        dp[0] = 0
        for i in range(1,amount+1):
            m = amount+1
            for c in coins:
                if i-c>=0 and dp[i-c]<amount+1:
                    m = min(m, dp[i-c]+1)
            dp[i] = m
        return dp[amount] if dp[amount]<amount+1 else -1

面试题 08.11. 硬币

硬币。给定数量不限的硬币,币值为25分、10分、5分和1分,编写代码计算n分有几种表示法。(结果可能会很大,你需要将结果模上1000000007)
面试题 08.11. 硬币

python 复制代码
class Solution:
    def waysToChange(self, n: int) -> int:
        coins = [25,10,5,1]
        dp = [0] * (n+1)
        dp[0] = 1
        for coin in coins:
            for i in range(coin, n+1):
                # f(x,i) = f(x-1,i) + f(x,i-coin)
                dp[i] = dp[i] + dp[i-coin]

        return dp[n]%1000000007
相关推荐
一去不复返的通信er2 小时前
力扣-图论-岛屿数量
算法·leetcode·图论
程序 代码狂人4 小时前
切片表与分区表的区别(数据开发面试版)
java·大数据·开发语言·数据仓库·算法
HDU-Dade5 小时前
【校招笔试真题】简要介绍 Self-Attention 的前沿算法
人工智能·算法
小郎君6587 小时前
Vue keep-alive 切标签后滚动位置回顶?因为 onDeactivated 里读到的 scrollTop 是 0
算法
邵奈一8 小时前
GPT-6.1 Terra速度是Sol的3倍,价格减半
算法
RaaS1008 小时前
Node.js Brotli RCE 漏洞自查指南:fetch、undici、axios 都在影响面,三分钟确认你的版本
人工智能·深度学习·算法
shehuiyuelaiyuehao8 小时前
算法56,重排链表
数据结构·算法·链表
qq_452396239 小时前
第四篇:《索引原理与实战:B-tree、Hash、GIN、GiST、BRIN》
算法·哈希算法·gin
西索斯coding9 小时前
Qwen3-Max 与 Qwen-Plus:60 个真实修复任务评测方案
大数据·网络·算法·ai