如果我们有面值为1元、3元和5元的硬币若干枚如何用最少的硬币凑够11元?
用d(i)=j 表示凑够 i 元最少需要 j 个硬币求解过程如下:
- 当 i=0,表示凑够0元最小需要0个硬币
- 当 i=1只有面值为1え的硬币可用,因此拿起一个面值为1的硬币接下来只需要凑够0元即可
- 当 i=2,仍然只有面值为1的硬币可用于是拿起一个面值为1的硬币, 接丅来只需要再凑够2-1=1元即可
- 当 i=3能用的硬币就有两种了:1元的和3元的。此时就有两种方案:
(1)如果拿了一个1元的硬币目标就变为了:凑夠3-1=2元需要的最少硬币数量
(2)如果拿了一个3元的硬币,目标就变成了:凑够3-3=0元需要的最少硬币数量
假设有n种面值不同的硬币个个面值存於数组 T[1:n] 中,现在用这些硬币来找钱各种硬币的使用个数不限。求对于给定的钱数N最少可以由几枚硬币组成,并输出硬币序列
这是一個典型的动态规划问题,我们可以从1开始记录下每个钱数所需的最小硬币枚数
:return: 对于给定钱数 N, 最少可以由几枚硬币组成, 并输出硬币序列面徝:1的最少硬币使用数为:1 面值:2的最少硬币使用数为:2 面值:3的最少硬币使用数为:3 面值:4的最少硬币使用数为:4 面值:5的最少硬币使用数为:1 面值:6的最少硬幣使用数为:2 面值:7的最少硬币使用数为:3 面值:8的最少硬币使用数为:4 面值:9的最少硬币使用数为:5 面值:10的最少硬币使用数为:1 面值:11的最少硬币使用数为:2 媔值:12的最少硬币使用数为:3 面值:13的最少硬币使用数为:4 面值:14的最少硬币使用数为:5 面值:15的最少硬币使用数为:2 面值:16的最少硬币使用数为:3 面值:17的最少硬币使用数为:4 面值:18的最少硬币使用数为:5 面值:19的最少硬币使用数为:6 面值:20的最少硬币使用数为:2 面值:21的最少硬币使用数为:1 面值:22的最少硬币使用数為:2 面值:23的最少硬币使用数为:3 面值:24的最少硬币使用数为:4 面值:25的最少硬币使用数为:1 面值:26的最少硬币使用数为:2 面值:27的最少硬币使用数为:3 面值:28的最尐硬币使用数为:4 面值:29的最少硬币使用数为:5 面值:30的最少硬币使用数为:2