这道硬币找零题有好的DP解法么?# JobHunting - 待字闺中
K*i
1 楼
有25分,10分,5分和1分四种硬币,假定每种硬币都有无限个。给定一个找零的分值N,求不同的找法。递归比较容易,那么如何用DP?
比如说N = 11,共四种找法:
10 * 1 + 1 * 1
5 * 2 + 1 * 1
5 * 1 + 1 * 6
1 * 11
想用DP,状态转移方程如下
F(0) = 1;
F(n) = {F(n - 25), n >= 25} + {F(n - 10), n >= 10} + {F(n - 5), n >= 5} + {F(n - 1), n >= 1}
也就是
F(11) = F(1) + F(6) + F(10)
但是却发现有重复
F(6)的解包含5 * 1 + 1 * 1
在这基础上添加一个五分硬币得到5 * 2 + 1 * 1
F(10)的解包含5 * 2
在这基础上添加一个一分硬币得到5 * 2 + 1 * 1
这样就重复计算了
比如说N = 11,共四种找法:
10 * 1 + 1 * 1
5 * 2 + 1 * 1
5 * 1 + 1 * 6
1 * 11
想用DP,状态转移方程如下
F(0) = 1;
F(n) = {F(n - 25), n >= 25} + {F(n - 10), n >= 10} + {F(n - 5), n >= 5} + {F(n - 1), n >= 1}
也就是
F(11) = F(1) + F(6) + F(10)
但是却发现有重复
F(6)的解包含5 * 1 + 1 * 1
在这基础上添加一个五分硬币得到5 * 2 + 1 * 1
F(10)的解包含5 * 2
在这基础上添加一个一分硬币得到5 * 2 + 1 * 1
这样就重复计算了