/*对于财务处的工作人员来说,发工资那天是最忙碌的。财务处的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. python多边形裁剪
  2. cocos2d-lua 搓牌效果_4款热门面霜评测,欧莱雅效果一般,艾珂薇性价比高,菲洛嘉最贵...
  3. 计算机辅助工艺设计张胜文,计算机辅助工装设计.ppt
  4. Java中CAS详解
  5. ubuntu16.04安装gcc g++7.5.0及各个版本的切换
  6. Windows Server 2003 下安装Apache+Php+Mysql
  7. VRRP和HSRP在企业网中的应用
  8. git出现红字说明什么_怀孕的第一个月会出现什么变化?若有7种表现,说明可能怀上了...
  9. Microsoft SQL 2000 错误代码(一)
  10. 苹果Mac高级文件搜索工具:ProFind
  11. 大麦网抢票软件工具开发系列(一)
  12. 211逆袭浙大-计算机及相关衍生专业保研之路纪实(深度长文,收藏了)
  13. Android打开日历账号管理,Android 日历CalendarProvider
  14. 2018/9/27---高质量SCI论文撰写方法以及ESI引用经验交流 韩光洁教授(大连理工)
  15. 光缆接续盒图标_光缆线路施工技术(超全)
  16. 用户需求分析是什么?重难点是什么?
  17. 微信小程序(一)认识微信小程序
  18. 技术书写作你要知道的几件事
  19. STC89C52控制74HC595,74HC138双色16x16点阵屏循环显示汉字
  20. MATLAB 中画图高级get函数和set函数

热门文章

  1. 8086逻辑移位指令SHL和SHR
  2. 苹果 iOS 14.2 Beta 2发布!还是会闪退?
  3. 如何用python给自己的孩子取一个名字?
  4. FPGA经验谈系列文章——前言和目录
  5. Linux下目录的作用
  6. 多线程(3)--线程安全
  7. 题解 The Blocks Problem(UVa101)紫书P110vector的应用
  8. 计算机图形学--中点椭圆算法原理及代码实现
  9. e站host地址_台达变频器VFD-E 系列MODBUS-RTU详解
  10. Vue中的ref是做什么的?