Menu
CoddyTech

零钱兑换问题

Coddy 动态规划入门 课程的第 8 课,共 15 课。

零钱兑换问题是动态规划中的经典问题。给定一组面额不同的硬币和一个总金额,任务是找出凑出指定金额所需的最少硬币数。

例如,假设我们有面额为 [1, 5, 10] 的硬币,要凑出金额 15。所需的最少硬币数是 2(一枚 10 面额的硬币和一枚 5 面额的硬币)。

要用动态规划解决这个问题,我们可以创建一个表格,行表示硬币面额,列表示从 0 到给定总金额的各个金额。然后,我们自底向上填写表格,计算使用每种面额的硬币凑出每个金额所需的最少硬币数。

challenge icon

挑战

中等

编写一个程序,接收两个输入:一个硬币面额列表和一个目标金额,并返回凑出目标金额所需的最少硬币数量。

例如,面额为 [1, 5, 10],目标金额为 15 时,输出应为 2。

亲手试试

def min_coins(coins, target):
    # 在这里编写代码

动态规划入门中的所有课

自己练习: Python 在线编译器