输入:第一行为产品种类数
接下来每行为产品价格数
最后一行为预算金额。
输出:
能买到的最少产品件数,无法没有匹配的返回-1
import java.util.*;
public class Main{
static int count = 0;//件数
static boolean flag = false;//是否可以全部花光,默认不行
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();//产品件数
int[] a = new int[n];
for(int i=0;i<n;i++){
a[i] = sc.nextInt();
}
int N = sc.nextInt();//预算
Arrays.sort(a);
test(N,n,a);
if(flag){
System.out.println(count);
}else{
System.out.println(-1);
}
}
public static void test(int N,int n,int[] a){
int[] b = new int[a.length];
for(int i=0;i<a.length;i++){
b[i] = a[i];
}
if(N==0){//正好花光预算
flag = true;
}else{
if(n==0){//预算存在剩余
return;
}else{
int a1 = N/a[n-1];
count +=a1;
int b1 = N%a[n-1];
test(b1,n-1,b);
}
}
}
}