#include <climits>
#include <iostream>
#include <vector>
using namespace std;
//类似完全背包问题
int main() {
int n,aim;
cin>>n>>aim;
vector<int> arr(n,0);
for(int i=0;i<n;i++){
cin>>arr[i];
}
vector<int> dp(aim+1,INT_MAX);//dp[i]表示组成钱数i所需的最少货币数
dp[0]=0;
for(int i=1;i<aim+1;i++){
for(int j=0;j<n;j++){
if(arr[j]<=i){
dp[i]=min(dp[i-arr[j]]+1,dp[i]);
}
}
}
cout<<(dp[aim]==INT_MAX?-1:dp[aim]);
return 0;
}
// 64 位输出请用 printf("%lld")



京公网安备 11010502036488号