首页 / 算法 / FCC 高级算法题 收银机找零钱
FCC 高级算法题 收银机找零钱
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了FCC 高级算法题 收银机找零钱,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1740字,纯文字阅读大概需要3分钟。
内容图文
Exact Change
设计一个收银程序 checkCashRegister()
,其把购买价格(price
)作为第一个参数 , 付款金额 (cash
)作为第二个参数, 和收银机中零钱 (cid
) 作为第三个参数.
cid
是一个二维数组,存着当前可用的找零.
当收银机中的钱不够找零时返回字符串 "Insufficient Funds"
. 如果正好则返回字符串 "Closed"
.
否则, 返回应找回的零钱列表,且由大到小存在二维数组中.
代码:
1 function checkCashRegister(price, cash, cid) { 2 var obj = {}; 3var num = 0; 4var odd = cash - price; 5var arr = []; 6var newArr = []; 7var a = 0; 8 9for (var i = 0; i < cid.length; i++) { 10//把这个二维数组的第一项和第二项分别变为新建对象的属性和属性值11var s = cid[i][0]; 12 obj[s] = cid[i][1]; 13//累加得出收银机零钱的总和14 num += cid[i][1]; 15 } 16if (odd === num) { 17//如果收银机中的钱num和需要找的钱odd相等,返回字符串“Closed”18return "Closed"; 19 } 20for (var j = 0; j < Object.keys(obj).length; j++) { 21//遍历对象属性22var name = Object.keys(obj)[8 - j]; 23//新建一个关于美元数额的数组24var figure = [100, 20, 10, 5, 1, 0.25, 0.1, 0.05, 0.01]; 2526 fi1(); 2728if (a > 0) { 29 arr.push([name, figure[j] * a]); 30 a = 0; 31 } 32 } 33function fi1() { 34if (odd >= figure[j] && obj[name] >= figure[j]) { 35//判断odd,如果大于某一面额的钞票且在收音机中有该面值的钞票36 odd = odd - figure[j]; 37//js的精度问题,2=1.999999,所以要用Math.round()来四舍五入38 odd = Math.round(odd * 10000) / 10000; 39 obj[name] = obj[name] - figure[j]; 40 obj[name] = Math.round(obj[name]); 41//这个a是用来判断是否有多张统一面值的钞票,这个在上面的if语句中用来给空数组arr添加元素42 a += 1; 43 fi1(); 44 } 45 } 46if (odd === 0) { 47//如果可以找零并且有剩余,就返回一个应找回的零钱列表48return arr; 49 } elseif (odd > 0) { 50//如果收音机中的钱不够找零时,返回字符串"Insufficient Funds"51return "Insufficient Funds"; 52 } 53 } 5455 checkCashRegister(19.50, 20.00, [ 56 ["PENNY", 0.50], 57 ["NICKEL", 0], 58 ["DIME", 0], 59 ["QUARTER", 0], 60 ["ONE", 0], 61 ["FIVE", 0], 62 ["TEN", 0], 63 ["TWENTY", 0], 64 ["ONE HUNDRED", 0] 65 ]);
原文:http://www.cnblogs.com/lailailee/p/7351881.html
内容总结
以上是互联网集市为您收集整理的FCC 高级算法题 收银机找零钱全部内容,希望文章能够帮你解决FCC 高级算法题 收银机找零钱所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。