zoukankan      html  css  js  c++  java
  • 收银系统算法

    设计一个收银程序 checkCashRegister() ,其把购买价格(price)作为第一个参数 , 付款金额 (cash)作为第二个参数, 和收银机中零钱 (cid) 作为第三个参数.


    cid 是一个二维数组,存着当前可用的找零.

    当收银机中的钱不够找零时返回字符串 "Insufficient Funds". 如果正好则返回字符串 "Closed".

    否者, 返回应找回的零钱列表,且由大到小存在二维数组中.

    // 贪心 greedy

    function checkCashRegister(price, cash, cid) {
        var change = [];
        // Here is your change, ma'am.
        var cidDic = {
            "ONE HUNDRED": {val: 100.00},
            "TWENTY": {val: 20.00},
            "TEN": {val: 10.00},
            "FIVE": {val: 5.00},
            "ONE": {val: 1.00},
            "QUARTER": {val: 0.25},
            "DIME": {val: 0.10},
            "NICKEL": {val: 0.05},
            "PENNY": {val: 0.01},
        };
        
        for(var i = 0; i < cid.length; i++) {
            cidDic[cid[i][0]].num = (cid[i][1] * 1e3) / (cidDic[cid[i][0]].val * 1e3);  // 修正js浮点数计算误差
        }
        
        var diff = cash - price;
        
        for(var key in cidDic) {
            var total = 0;
            while(diff >= cidDic[key].val && cidDic[key].num > 0) {
                cidDic[key].num--;
                total++;
                diff = (diff * 1e3 - cidDic[key].val * 1e3) / 1e3;
                if(cidDic[key].num === 0 || diff < cidDic[key].val) {
                    change.push([key, total * (cidDic[key].val)]);
                    break;
                }
            }
        }
        if (diff === 0) {
            for (var key in cidDic) {
                if (cidDic[key].num !== 0) {
                    return change;
                }
            }
            return "Closed";
        } else {
            return "Insufficient Funds";
        }
    }
    // Example cash-in-drawer array:
    // [["PENNY", 1.01],
    // ["NICKEL", 2.05],
    // ["DIME", 3.10],
    // ["QUARTER", 4.25],
    // ["ONE", 90.00],
    // ["FIVE", 55.00],
    // ["TEN", 20.00],
    // ["TWENTY", 60.00],
    // ["ONE HUNDRED", 100.00]]
    checkCashRegister(3.26, 100.00, [["PENNY", 1.01], ["NICKEL", 2.05], ["DIME", 3.10], ["QUARTER", 4.25], ["ONE", 90.00], ["FIVE", 55.00], ["TEN", 20.00], ["TWENTY", 60.00], ["ONE HUNDRED", 100.00]])  // [["TWENTY",60],["TEN",20],["FIVE",15],["ONE",1],["QUARTER",0.5],["DIME",0.2],["PENNY",0.04]]
  • 相关阅读:
    ios中地图
    ios中地图定位
    ios中文件下载(带缓存)
    ios中tableview网封装(viewcontroller封装)常用的
    ipad开发小结
    ios tableview分组
    los中预览文件
    ios中一级导航
    ios中封装九宫格的使用(二级导航)
    ios中自定义button
  • 原文地址:https://www.cnblogs.com/angle-qqs/p/8253879.html
Copyright © 2011-2022 走看看