#include <stdio.h>
int main() {
int i,j,N1,N2;
scanf("%d%d",&N1,&N2);//N1表示N1种不同已有的钞票,N2表示需要兑换的钞票值
int dp[N2+1];
for(i=0;i<N2+1;i++)
dp[i]=-1; //表示金额 i 还未计算出最优解
int coins[N1];
for(i=0;i<N1;i++)//输入N1种不同的钞票
scanf("%d",&coins[i]);
dp[0] = 0;
for(i=1;i<N2+1;i++) //依次计算金额1至N2的最优解(即兑换N2所需的最小钞票数)
for(j=0;j<N1;j++) //遍历已有面值钞票即coins数组
if(coins[j]<=i&&dp[i-coins[j]]!=-1) //所有小于等于i的面值,如果金额i-coins[j]有最优解
if(dp[i]==-1||dp[i]>dp[i-coins[j]]+1) //如果当前金额还未计算或者dp[i]比正在计算的最优解大
dp[i]=dp[i-coins[j]]+1; //更新dp数组
printf("%d等额的最小钞票数为%d",N2,dp[N2]);
return 0;
}