动态规划需要弄清楚两个问题,首先子问题的最优解,其次重叠子问题。首先来看下一个问题吧:
有3种硬币,对应的面值是1、2、4,如果要组成11元,最少需要几枚硬币呢?
思路:考虑组成0元,需要0枚硬币;f(0) = 0。这里设f(n)为组成n元最少需要的硬币数;
考虑组成1元,需要1枚硬币,f(1) = 1;
考虑组成2元,可以有:f(2) = min (f(1) + 1, f(0) + 1) = f(0) + 1= 1;
考虑组成3元,可以有:f(3) = min (f(2) + 1, f(1) + 1) = f(1) + 1= 2;
时间: 2024-10-05 08:50:11