货币系统基于动态规划的实现方式
发布时间
阅读量:
阅读量
题目描述
提供一种包含n种不同面值的货币体系,目标是计算出能够组合成面值为m的货币共有多少种不同的方式。
输入
第一行给出两个数值n和m。
输出
输出一行,表示满足条件的方案总数。
样例输入
3 10 //使用3种不同面值来组合成总面值为10的方式
1 //第一种面值为1
2 //第二种面值为2
5 //第三种面值为5
样例输出
10
解题思路:
采用线性动态规划方法进行求解;
dp[i]所代表的含义是:当金额为i(范围在0到m之间)时,所有可能的组合方式总数;
最终的目标是计算金额为m-1时对应的方案数目;
将原问题转化为求解金额从0到m的所有可能组合数;
状态转移方程的形式为:dp[i] += dp[i - V[j]];其中V[j]表示当前所使用的货币面值,并且这些面值按照从小到大的顺序进行处理;
初始条件设定:当金额为0时,只存在一种组合方式,即不选择任何货币。若将其初始化为0,则后续累加操作将无法得到正确的结果;
当面值设定为1时:

当面
全部评论 (0)
还没有任何评论哟~
