动态规划-状态转移方程练习

1.给定一个数组penny表示可用的零钱都有哪些面值,再给定一个整数n表示penny的长度,再给定一个整数m表示需要换零钱的整钱面值,输出换钱的方案有几种。

样例:
[1,2,4],3,3
返回:2

这是一个比较简单的动态规划问题,dp为状态数组,只使用1的时候有一种方法:3=1+1+1;使用1、2的时候有两种方法:3=1+1+1、3=1+2;使用1、2、4的时候因为4比3大,则还是有两种方法:3=1+1+1、3=1+2。这是m=3的情况,但由于要判定下一个penny值能不能使用,也要同时求出小于3的情况,于是得到了样例问题的状态数组:

  1 2 4
0 0 0 0
1 1 1 1
2 1 2 2
3 1 2 2

列出状态转移方程:

if penny(n)

if penny(n)>m,f(n,m)=f(n-1,m)

(心得:动态规划题重要的就是找到上面的这个递推关系,列表什么的都是起到一个辅助作用,帮助找递推关系的)

你可能感兴趣的:(算法)