收银小帮手

题目描述

某某超市收银员每天都面对很多零钱,但是真正在需要给顾客找零时,又经常会不够用,不是少一元的,就是少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;
	}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值