题目
假设我们有8种不同面值的硬币{1,2,5,10,20,50,100,200},用这些硬币组合够成一个给定的数值n。例如n=200,那么一种可能的组合方式为 200 = 3 * 1 + 1*2 + 1*5 + 2*20 + 1 * 50 + 1 * 100. 问总过有多少种可能的组合方式?原题 转载
分析
这道题目是非常经典的动态规划算法题。给定一个数值sum,假设我们有m种不同类型的硬币 v1,v2,...,vm ,如果要组合成sum,那么我们有
sum=x1∗v1+x2∗v2+...+xm∗vm
求所有可能的组合数,就是求满足前面等值的系数 x1,x2,...,xm 的所有可能个数。
思路1:
用暴力枚举,各个系数可能的取值无非是
x1=0,1,...,sum