求解答
对于财务处的工作人员来说,发工资那天是最忙碌的。财务处的NowCoder最近在考虑一个问题:如果每个员工的工资额都知道,最少需要准备多少张人民币,才能在给每位同事发工资的时候都不用找零呢? 这里假设员工的工资都是正整数,单位元,人民币一共有100元、50元、20元、10元、5元、2元和1元七种。 我这样写,为什么会提示运行错误?到底是哪一块数组越界了? 各位大神帮我看看。谢谢。
import java.util.Scanner;
public class classss {
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);
int[]
mon={1,2,5,10,20,50,100};
while (sc.hasNext()) {
int
n=sc.nextInt();
int[] input=new int[n];
int max=0;
int sum=0;
for(int i=0;i<n;i++){
input[i]=sc.nextInt();
if(input[i]>max)
max=input[i];
}
int [] dp=new int[max+1];
dp[0]=0;
for(int i=0;i<mon.length;i++){
for(int j=mon[i];j<=max;j++){
dp[j]=dp[j-mon[i]]+1;
}
}
for(int i=0;i<n;i++){
sum+=dp[input[i]];
}
System.out.println(sum);
}
}
}