完全背包,注意dp的初始化
import java.util.*;
public class Main{
static int maxValue=0;
public static void main(String []args){
Scanner input=new Scanner(System.in);
int n=input.nextInt();
int amin=input.nextInt();
int[] num=new int[n];
for(int i=0;i<n;i++){
num[i]=input.nextInt();
}
int[]dp=new int [amin+1];
Arrays.fill(dp,Integer.MAX_VALUE-2);
dp[0]=0;
for(int i=0;i<n;i++){
for(int j=num[i];j<=amin;j++){
dp[j]=Math.min(dp[j],dp[j-num[i]]+1);
}
}
if(dp[amin]==Integer.MAX_VALUE-2)
System.out.println(-1);
else
System.out.println(dp[amin]);
}
}

京公网安备 11010502036488号