换零钱:
有数量不限的硬币,币值为25分、10分、5分和1分,请编写代码计算n分有几种表示法。
给定一个int n,请返回n分有几种表示法。保证n小于等于100000,为了防止溢出,请将答案Mod 1000000007。
测试样例
6
返回:2
动态规划
dp[i][sum] 使用i 种硬币组成sum有多少种方式。
设v1,v2,v3,v4 硬币的面值
sum = v1*x1+ v2*x2 + v3*x3 + v4*k; dp[i][sum]
{x1,x2,x3,k}
{0…x1}
{0…x2}
{0…x3}
{0…k}
k<=sum/v4;
sum_0 = v1*x1+ v2*x2 + v3*x3 + v4*(k); dp[i-1][sum-v4*k]
sum_1 = v1*x1+ v2*x2 + v3*x3