前几年有个很火的那个喝啤酒的问题,前几天又在一些算法笔试题里面看到了。就心血来潮把这个算法写出来。题目是这样的
小明有17块钱,要去买啤酒喝,啤酒的单价是2块钱一瓶。这天正好商家有个回收酒瓶和瓶盖的活动,3个空酒瓶能换一瓶酒,5个瓶盖能换一瓶酒。(钱跟酒瓶和瓶盖不能混合使用)
问题1:问小明最多能喝到几瓶酒?
问题2:最后小明还剩下多少钱?多少个瓶子?多少个盖子?
算法 使用的是js
var numpin = 0;
var numgai = 0;
function main(){
var money = 17;
console.log("最多的酒====="+getJiuNum( Math.floor(money/2)));
console.log("还剩下的钱====="+money%2);
console.log("还剩下的瓶子====="+numpin);
console.log("还剩下的盖子====="+numgai);
}
function getJiuNum(num){
numpin = num;
numgai = num;
return num+getDuiHuanNum(numpin,numgai);
}
function getDuiHuanNum(m,n){
if(m<3 && n<5){
numpin = m;
numgai = n;
return 0;
}
var num1 = Math.floor(m/3);
var num2 = Math.floor(n/5);
numpin = num1 + num2 + m%3;
numgai = num1 + num2 + n%5;
return num2+num1+getDuiHuanNum(numpin,numgai);
}
大聪明的你算出来了吗