/*对于财务处的工作人员来说,发工资那天是最忙碌的。财务处的NowCoder最近在考虑一个问题:如果每个员工的工资额都知道,最少需要准备多少张人民币,才能在给每位  同事发工资的时候都不用找零呢?这里假设员工的工资都是正整数,单位元,人民币一共有100元、50元、20元、10元、5元、2元和1元七种。
输入描述:
  输入数据包含多个测试实例,每个测试实例的第一行是一个整数n (n≤100),表示人数,然后是n个员工的工资。
输出描述:
  对于每个测试实例输出一个整数x,表示至少需要准备的人民币张数。每个输出占一行。
*/
/** 本题有两种解法:* 1、贪心:*  其实这道题乍眼一看就是用贪心做的,但是贪心有一个缺陷,就是有时候不能取到最优,但是在本题,用贪心就可以,思路很简单,把给的钱从大到小排序,每次都尽量取最大的即可。代码如下:
*/
public class Main {public static void main(String[] args) {Scanner sc=new Scanner(System.in);int[] mon={100,50,20,10,5,2,1};while (sc.hasNext()) {int n=sc.nextInt();int[] input=new int[n];int sum=0;for(int i=0;i<n;i++){input[i]=sc.nextInt();int temp=input[i];for(int j=0;j<mon.length;j++){sum+=(temp/mon[j]);temp=temp%mon[j];if(temp==0){break;}}}System.out.println(sum);}}
}
/ * * 2、动态规划:其实动态规划是我们经常用的一个思想,也是能保证取到最优解的,如果这道题稍有变动的话,贪心就做不了,只能用动态规划,但是动态规划有一个缺点,用空间换时间,动态打表会浪费很多内存,就本题来说,我最开始用动态规划做,自己再本机运行正确,但是提交上去就提示运行错误(一般是数组越界),为什么会出现这样的问题呢,因为测试用例有边界值,举个例子来说:如果给这样的一个测试用例:
3
1 2 2147483647
就会出现java.lang.NegativeArraySizeException这个异常,因为我们要开辟2147483647+1个数组,这样导致了开辟数组的长度(当然也超出了int的范围),超出了JVM的设置,就会报错,当然也可以修改JVM的参数,但是我们只能修改自己本机上的,改不了这个测试程序后台的参数,所以,如果自己运行正确,提交运行错误,应该是这个原因,所以,动态规划虽然是个好办法,但是如果测试数据过大,就会很费内存,有时候会报错,所以我们针对不同的题需要有合适的解法,这个题用贪心的话,就不会存在这个数组越界的问题。
下面贴上我自己动态规划的代码,虽然下面代码没有通过测试用例,但是这个想法比较好,可以用的其他题,如果有什么问题,希望大家指出问题。*/
public class Main {public static void main(String[] args) {Scanner sc=new Scanner(System.in);int[] mon={1,2,5,10,20,50,100};System.out.println(Integer.MAX_VALUE);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);}}
}

Java算法---发工资相关推荐

  1. 使用Java接口模拟给员工发工资

    模拟给所有员工发工资. 思路: 1. 定义员工Employee类.包含属性:姓名,薪资,银行卡(保存工资). 2. 定义经理Manager类继承Employee类,包含属性:奖金. 3. 定义职员Cl ...

  2. hdu 2021 发工资咯:)(c语言)

    hdu 2021 发工资咯:) 点击做题网站链接 题目描述 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Ja ...

  3. HDU2021 发工资咯:)【整数计算】

    发工资咯:) Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submis ...

  4. HDU2021 发工资咯:)【入门】

    发工资咯:) Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  5. 102道java算法

    1:奥运奖牌计数 import java.util.Scanner; //输入n+1行,第1行是A国参与决赛项目的天数n,其后n行,每一行是该国某一天获得的金.银.铜牌数目,以一个空格分开 //输出1 ...

  6. 又一个创业者自杀:心生郁结,被曝曾卖房给员工发工资

    创业之路到底有多艰难,竟让许多创业者最后走向轻生之路? 2019年12月底,在即将进入新年之际,网传山西好车容易创始人闫宝才于12月26日下午,在家中服用头孢等药物及白酒自杀,后被紧急送往附近医院抢救 ...

  7. 5号发工资和25号发工资,真能看出公司是否靠谱?

    来源 | 网络 5号发工资和25号发工资,就能看出一个公司是否靠谱? 对很多工薪族来说,发工资这一天基本上是脱贫致富的重要日子,也是很多人的还款日子,交房租,还信用卡--想到接下来的日子又得靠拆东墙补 ...

  8. HDU_oj_2021 发工资喽

    Problem Description 作为杭电的老师,最盼望的日子就是每月的8号了,因为这一天是发工资的日子,养家糊口就靠它了,呵呵 但是对于学校财务处的工作人员来说,这一天则是很忙碌的一天,财务处 ...

  9. 【Java7】练习:选角色,挑苹果,员工类,换心脏,斗地主,发工资,客户信息管理软件,开发团队调度系统

    文章目录 1.玩家选择角色:return new 2.人工挑苹果:只一个接口CompareAble 3.员工类接口:implements Comparator 4. 医生帮换心脏:Organ类doWo ...

最新文章

  1. html主题居中用什么命令,html – 如何居中的元素 – 使用什么而不是align:center属性?...
  2. mysql导出单表数据
  3. java 命令读取参数_如何读取/处理命令行参数?
  4. 帆软报表(finereport)点击事件对话框打开
  5. phpcmsV9:后台无法选择模板
  6. 【angularjs】【学习心得】ng-class总结
  7. cad无法加载arx文件_CAD文件损坏?无法打开?试试这8个方法吧
  8. 使用extract-text-webpack-plugin提取css文件
  9. Bailian2786 Pell数列【数列】(POJ NOI0102-1788,POJ NOI0103-1788)
  10. 【转自知乎】送给前端的你,推荐几篇前端汇总文章
  11. python语言和汇编语言_python语言属于汇编语言吗?
  12. uWSGI, Gunicorn,ngnix 服务器 详解
  13. windows挂起进程方法介绍
  14. 【云原生系列】云原生下的网络安全如何防御?
  15. 撼龙图怎么开鸿蒙炁灵,一人之下藏金图技巧-一人之下撼龙藏金图高概率出绝世炁灵技巧...
  16. Mac 下使用ISIS 处理数据 -CTX,HiRISE,LRO
  17. 如何解决失眠有效方法,五个助眠小妙招
  18. IP座席接入系统方案
  19. 怎样把ogg格式转换mp3
  20. 有关计算机的英语作文一千字,英语作文一封信大学1000词5篇

热门文章

  1. Oracle会计核算版本号,ORACLE ERP 成本核算会计信息归纳
  2. 最好用的网易邮箱工具-网易邮箱助手
  3. 动态规划表格法解决最长公共子序列(LCS)问题
  4. locust性能测试图表参数以及分析
  5. web服务器 ---nginx 虚拟主机的创建(基于 域名 . 端口 . ip )以及nginx访问控制
  6. ajax怎么解决报414,414request怎么解决
  7. 中文语法纠错论文解读(一)
  8. 二战考研哈工大之路记录
  9. 名创优品很“优”也很“忧”
  10. PCB线路板为何板层数越高制作难度也越高?