动态规划法


动态规划(dynamic programming)

如果一个问题是由交叠的子问题组成,就可以运用动态规划法解决这个问题。

通过递推由子问题推出问题的解。动态规划法一般用于求解最优解问题。

最优化法则:问题的任一实例的最优解都是由其子实例的最优解构成的。

求解问题的关键:找出递推关系,写出递推式

1 币值最大化问题:一组硬币排成一行,币值无序,找出不相邻的硬币组成的最大币值。

f(n) = max(f(n-1),f(n-2)+C(n)) //最大值要么包含最后一个,要么不包含最后一个。
f(0) = 0, f(1)= C(1)

2 找零问题:需要找零为n,最少需要多少面值为d1,d2,d3,...dm的硬币。

f(n) = min(f(n-d1), f(n-d2),...f(n-dm)) + 1  //找出减一个后的最小值。
f(0) = 0

posted @ 2017-10-26 16:39  mingzhang  阅读(317)  评论(0编辑  收藏  举报