这题开始是以为知道大概思路的,但就是很难实现。想了好久实在忍不住了搜了博客 发现是DP/背包问题,对这两种都没什么了解,也就很正常了。 DP思路是通过求出 每次输入的 所需硬币数 (如5可能需要1个硬币,即一个5,或者5个硬币,五个1)的方案数量,通过累加所有硬币数的所有方案之和得到结果。 难点是如何推出状态转移方程,我们如何通过之前的结果推导出之后的结果才是关键。 本题的特点是,由于硬币值越小,可以满足的输入就越多,故我们从最大的开始。 所以先int a[5] = {50, 25, 10, 5, 1}; 故我们每次累加从a[i]开始,刚开始尽可能有硬币值大的组合,到最后就是硬币值较小的组合。...