#498. coin

coin

题目描述

在现实生活中,我们经常遇到硬币找零的问题,例如,在发工资时,财务人员就需要计算最少的找零硬币数,以便他们能从银行拿回最少的硬币数,并保证能用这些硬币发工资。我们应该注意到,人民币的硬币系统是 1001005050202010105522110.50.50.20.20.10.10.050.050.020.020.010.01 元,采用这些硬币我们可以对任何一个工资数用贪心算法求出其最少硬币数。

但不幸的是:我们可能没有这样一种好的硬币系统,因此用贪心算法不能求出最少的硬币数,甚至有些金钱总数还不能用这些硬币找零。例如,如果硬币系统是 404030302525 元,那么 3737 元就不能用这些硬币找零;9595 元的最少找零硬币数是 33

又如,硬币系统是 1010775511 元,那么 1212 元用贪心法得到的硬币数为 33,而最少硬币数是 22

你的任务就是:对于任意的硬币系统和一个金钱数,请你编程求出最少的找零硬币数;如果不能用这些硬币找零,请给出一种找零方法,使剩下的钱最少。

输入格式

第一行两个整数 N,MN,M 表示硬币的种数和金钱数

第二行 NN 个整数用来描述硬币系统

输出格式

一行一个整数表示答案

3 13
6 4 3
3