收银小帮手

来源:互联网 发布:柯南剧场版 知乎 编辑:程序博客网 时间:2024/06/11 12:07

题目描述

某某超市收银员每天都面对很多零钱,但是真正在需要给顾客找零时,又经常会不够用,不是少一元的,就是少5角的,请大家帮收银员MM找到一个最优的找零算法,让手上零钱得到充分利用。

找零原则:

1) 根据系统全部零钱内钱币的信息,按钱币总张数最少的原则进行退币。

2) 零钱总数:50元的10张,20元的20张,10元的50张,5元的100张,1元的100张,5角的200张,1角的500张,一角以下的可以丢弃。

输入

收到的钱数(单位:元)

输出

1) 找零成功后返回各种人民币的张数,格式需要和示例中保持一致

 

2) 零钱不足时返回失败 the operate is fail

样例输入

2151

样例输出

the operate is fail

地区

公共

产品线

公共

阶段

入职前练习

难度

2

public String zhaoQian(){int g_num_50yuan = 10;int g_num_20yuan = 20;int g_num_10yuan = 50;int g_num_5yuan = 100;        int g_num_1yuan = 100;        int g_num_5jiao = 200;        int g_num_1jiao = 500;        int num_50yuan=0,num_20yuan=0,num_10yuan=0,num_5yuan=0,num_1yuan=0,num_5jiao=0,num_1jiao=0;Scanner sc=new Scanner(System.in);double money=sc.nextDouble();if(money>2150.0)return "the operate is fail";while(money>=50.0&&num_50yuan<g_num_50yuan){num_50yuan++;money=money-50.0;}while(money>=20.0&&num_20yuan<g_num_20yuan){num_20yuan++;money=money-20.0;}while(money>=10.0&&num_10yuan<g_num_10yuan){num_10yuan++;money=money-10.0;}while(money>=5.0&&num_5yuan<g_num_5yuan){num_5yuan++;money=money-5.0;}while(money>=1.0&&num_1yuan<g_num_1yuan){num_1yuan++;money=money-1.0;}while(money>=0.5&&num_5jiao<g_num_5jiao){num_5jiao++;money=money-0.5;}while(money>=0.1&&num_1jiao<g_num_1jiao){num_1jiao++;money=money-0.1;}String result="num_50="+num_50yuan+" num_20="+num_20yuan+" num_10="+num_10yuan+" num_5="+num_5yuan+" num_1="+num_1yuan+" num_0.5="+num_5jiao+" num_0.1="+num_1jiao;return result;}


 

原创粉丝点击