求解答

对于财务处的工作人员来说,发工资那天是最忙碌的。财务处的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);
 }
}
}


 

全部评论
我猜想你是希望在输入完成的时候就动态输出结果; (1)Scanner.nextInt() 这个方法在buff里面是读取并返回buffer的相对应的值后,指针会跳到下一个int; 所以在初始化的时候,第一次初始化input的时候数组的长度只会是buffer里面的第一个数字。 (2) 接下来的for loop里面给input[] 赋值我猜可能是给相对应的input[n]赋值给当前的输入? 然后再判断最大值在下面的dp里面初始化max+1的数字来做dp? 这一块的代码会导致在for loop里loop完nextInt()之后,后面的input[i]就会是null值,因为buffer里的int值已经读完了,所以会出现空指针(我没throw exception去具体测试)。比如说输入1200 1300 1400, 那么你的input的长度就是1200, 初始化之后会是input[0] = 1300, input[1] = 1400, input[2] = null ...  然后我在你代码基础上做了一些修改,没有做结束输入的判断,终止while loop之后就会输出结果: import java.util.ArrayList; import java.util.Scanner; public class NewCoder_WeChat1 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int[] mon = {1, 2, 5, 10, 20, 50, 100}; ArrayList outcomes = new ArrayList(); int sum = 0; while (sc.hasNext()) { int n = sc.nextInt(); System.out.println(sc); int[] dp = new int[n + 1]; dp[0] = 0; for (int i = 0; i < mon.length; i++) { for (int j = mon[i]; j <= n; j++) { dp[j] = dp[j - mon[i]] + 1; } } outcomes.add(dp[n]); } for (Object out : outcomes) { sum += out.hashCode(); } System.out.println("sum is:" + sum); } }
点赞 回复 分享
发布于 2015-11-20 20:00

相关推荐

2025年初,新的一年开始,我给自己暗暗打气,发誓今年一定要拿到offer。如今2025年即将结束,找工作仍然没有任何水花,如今的失意和落魄和年初信心满满的姿态形成鲜明对比,想必也是因为被社会毒打,认清现实了吧。先分享一下贴主的背景,本人女,本科末流985文科专业,后来保送到华五,成绩一直是班级第一,有过国奖,实习有多段头部大厂经历。发贴的直接原因是今天华为面试挂,在反思中有很多复杂的想法,包括对自身能力的怀疑、对面试官所提问题的不解、对大环境的无奈。贴主是一个说话温柔、不喜欢咄咄逼人、有点社恐的人(基本上算是人们眼中对小女生的刻板印象,所以在历次群面中基本全挂(看到大家争抢当leader、t...
在找内推的小虾米:感觉这一段经历和我好像啊,前段时间面了很多车企,面试项目经历各种被拷打,大多数都没过一面,最有希望拿offer的一个终面挂了把我干破防了,打电话给爸妈哭了一个多小时才缓过来。我也开始否定自己,否定自己的一切,包括性格,能力,成长经历。。。最后面了深圳的某家公司,面试官人都挺友好,提的问题有深度但找到切入点 ,最后hr也按岗位最高的标准给的offer,我才发现自己并没有这么不堪,只是我的能力和经验和之前的岗位要求不那么符合而已。帖主一定不要灰心,招聘的窗口期还有很长很长,保持自信扬长避短,一定有企业能发现你的闪光点,祝好。
我的求职进度条
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务