题目描述
设有n 种不同面值的硬币,各硬币的面值存于数组T[1:n]中。现要用这些面值的硬币来找钱。可以使用的各种面值的硬币个数存于数组Coins[1:n]中。对任意钱数0≤m≤20001,设计一个用最少硬币找钱m的方法。
输入
输入的第一行中只有1 个整数给出n的值,第2 行起每行2 个数,分别是T[j]和Coins[j]。最后1 行是要找的钱数m。
输出
程序运行结束时,将计算出的最少硬币数输出。问题无解时输出-1。
样例输入 复制
3
1 3
2 3
5 3
18
样例输出 复制
5
提示
多组输入
dp[i]=min(dp[i],dp[i-coin[i]]+1),因为求最少硬币数,所以用Min,dp[i]代表没有取当前硬币,dp[i-coin[i]]代表取了面值为coin[i]的硬币,所以硬币数加一。