栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

柠檬水找零

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

柠檬水找零

在柠檬水摊上,每杯柠檬水售价5元,顾客排队购买,一次买一杯。

每位顾客只买一杯,然后向你付5元、10元或20元。必须给每个顾客正确找零。

注意一开始你的手头没有任何零钱。

如果你能给每位顾客正确找零。则返回true,否则返回false。

贪心算法:遇到5直接收下;遇到10,退一张5块,收下10块;遇到20块,有两种决策,最优决策是找一张10块和一张5块,这就是贪心的核心思路。因为要尽可能避免5块钱被找出去,5块钱最万能。第二种决策就是找3张5块这是在第一种决策不行的情况再考虑的第二种情况。

上代码:

//17.柠檬水找零
public class LemonChange17 {
    public static void main(String[] args) {
        System.out.println(change(new int[]{5,5,10,20}));
        System.out.println(change(new int[]{5,10,10,20}));
    }
    //贪心算法
    public static boolean change(int[] bills){
        int five=0;
        int ten=0;
        for (int bill:bills){
            if (bill==5){
                five++;
            }else if (bill==10){
                if (five==0){
                    return false;
                }else {
                    five--;
                    ten++;
                }
            }else {
                if (ten>0&&five>0){//局部最优
                    five--;
                    ten--;
                }else if (five>=3){
                    five-=3;
                }else {
                    return false;
                }
            }
        }
        return true;
    }
}

结果:

true

false

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1023708.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号