凑钱问题:
题目:给一个总额amount,以及现有的钱币面值数组coins,要求计算最少需要多少张coins中的钱币才能凑出总额;
动态规划是将大问题转化为小问题,然后一步步求解出最终结果。具体到这道题,我们可以把大问题即凑amount元转化为凑齐amout-1,amount-2等等
当我们计算"凑5元"的时候一定要相信:凑1-4元都已经是最优结果了,同样凑4元要相信凑1-3是最优结果。这便是动态规划的全部:大问题转化为小问题,每次小问题都是最优结果,最终基于这些小问题得到大问题的最优结果,各种dp问题的主要不同是大问题是如何“基于小问题”得出结果的
回到上面的图片中,我们这道题目要求的是计算凑amount所需最少的钱币张数,那凑X元储存的就应该是钱币的张数,所以上面的图片进一步转化
当我们凑5元的时候,由于有3中面值可选,我们不确定选哪个是最佳,所以需要遍历一次。当选面值1RMB时,需要借助子问题凑4元的答案;当选面值2RMB时,需要借助子问题凑3元;选面值3RMB需要借助子问题凑2元,如此得出三个答案(A,B,C),最终计算着三个答案哪个是最优结果,即哪个所需张数最少,并将至存放到dp[5]作为凑5元的最优结果,以上便是动态规划在凑硬币问题上的应用,其实既然都叫思想了很明显凡是大问题依赖小问题解的都可以使用dp求出。