33,008
社区成员
发帖
与我相关
我的任务
分享
import java.util.*;
public class Main {
public static void main(String[] args){
int ans[]=new int[10000]; //储存可以表达那些结果
int arr[]={10,5,2,1};
int num[]=new int[4]; //保存每个硬币的个数
Scanner sc=new Scanner(System.in);
int moneySum=0;
for(int i=0;i<4;i++){ //输入每个硬币的个数
num[i]=sc.nextInt();
moneySum+=num[i]*arr[i];
}
for(int i=0;i<=moneySum;i++) //初始化都为-1
ans[i]=-1;
//dp看可以结合的所有钱的情况
for(int i=0;i<4;i++){
ans[0]=0;
if(num[i]!=0){
for(int j=0;j<=moneySum;j++){
if(ans[j]!=-1)
ans[j]=num[i];
else if(j-arr[i]>=0&&ans[j-arr[i]]!=-1)
ans[j]=ans[j-arr[i]]-1;
}
}
}
int n=sc.nextInt(); //输入要给的钱数
for(int i=n;i<=moneySum;i++)
if(ans[i]!=-1){
System.out.println(i);
break;
}
}
}