完全背包,注意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]); } }