题目描述
有数量不限的硬币,币值为25分、10分、5分和1分,请编写代码计算n分有几种表示法。
给定一个int n,请返回n分有几种表示法。保证n小于等于100000,为了防止溢出,请将答案Mod 1000000007。
测试样例:
6
返回:2
参考骑着炮弹进城提到的dp方法
这里补充一些解释,如有错漏,还请指正。
我们用dp[i](i属于1~n ) 表示组合成i元一共有几种方法。
首先所有的硬币组合问题都要有基础面值:1元。i的总组合方法一定等于i中最后coin元不用新面值的方法+最后coin元使用新面值的方法。
而最后coin元 使用新面值的方法必然等于i-coin的总组合方法。
不用新面值的方法就是旧值
假如只有1元,那对于任给的1~n,必然只有1中组合方法。
假设增加一种新面值:coin元。对于任意i(i属于1~n),
当i<coin的时候,新面值组合方法为0,dp[i]不变。
当i=coin,新组合方法为1,总dp[i]=旧dp[i]+1
当coin<i<2coin,新组合方法仍然为1&