一、每一种面值硬币的数量有限(多重背包)
问题描述
设有n种不同面值的硬币,各硬币的面值存于数组T[1:n]中。现要用这些面值的硬币来找钱。可以使用的各种面值的硬币个数存于数组C[1:n]中 ,设计一个用最少硬币找钱m的方法。输出最少硬币的个数。
Input
输入数据第一行中只有1个整数给出n的值,第2行起每行2个数,分别是T[i]和C[i]。最后1行是要找的钱数m。
Output
输出数据只有一个整数,表示计算出的最少硬币数。问题无解时输出-1。
示例一
输入:
3
1 3
3 3
5 2
15
输出:
5
示例二
输入:
2
1 1
3 2
2
输出:
-1
问题分析
定义
dp[i]:记录找i元所用最少的硬币个数
T[i]:第i种硬币的面值
C[i]:第i种面值的硬币个数
算法设计
假设我们有3种面值分别为