java -柠檬水找零-贪心算法

在这里插入图片描述
这道题的大概意思是 商家本省没有钱 只靠顾客来找钱
假如第一个顾客 给了5块钱 现在商家就有了五块钱 第二个顾客来买水喝 除了20的找不开 5 ,跟10都能找开 本题的贪心策略就在于 找20 的时候 只用一张五块的跟一张十块的就能找开了 不用三张五块的
局部最优解 不影响其他的解

package 贪心;

public class LeamonChange {
	//柠檬水找零  贪心算法 

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		System.out.println(change(new int[]{5,5,20} ));

	}

	private static boolean change(int[] bills) {
		// TODO Auto-generated method stub
		int five=0,ten=0;  //没有必要写20 的 应为谁都找不开
		for(int bill:bills){  //遍历数组
			//判断第一张是否是五块的  是五块的就返回true five++ 否则就返回false
			//应为  自己本来就没钱 没法找
			if(bill==5){
				five++;
			}else if(bill==10){
				if(five>0){
					five--;
					ten++;
				}else{
					return false;
				}
			}else{
				if(bill==20){
					if(five>1 && ten>1){  //这样一张5 块的 一张10快的是局部最优解 不影响其他
						five--;
						ten--;
					}else if(five >3){
						five-=3;
						
					}else{
						return false;
					}
				}
			}
		}
		
		
		
		return true;
	}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值