看到有这样一个问题:
啤酒:
2元钱1瓶
4个瓶盖换1瓶
2个空瓶换一瓶
问:
10元最多可以喝几瓶?
主要想请教逻辑上如何思考这个问题?最好还能用js实现一下
看到有这样一个问题:
啤酒:
2元钱1瓶
4个瓶盖换1瓶
2个空瓶换一瓶
问:
10元最多可以喝几瓶?
主要想请教逻辑上如何思考这个问题?最好还能用js实现一下
function func(x) {
let cap = Math.floor(x / 2);
let bottle = Math.floor(x / 2);
let count = Math.floor(x / 2);
while(cap >=4 || bottle >=2 ){
if(bottle >=2 ){
bottle = bottle -2;
bottle++;
cap++;
count++;
}
if(cap >= 4) {
cap = cap - 4;
bottle++;
count++;
cap++;
}
}
return count;
}
console.log(func(10));
大概就是这样子吧.公交车上码的,错了不要介意~
十块钱可以买5瓶酒,5瓶酒有5个瓶盖,5个空瓶;换瓶酒后3瓶酒,1个瓶盖1个空瓶;喝完有4个空瓶4个瓶盖能换3瓶啤酒;3瓶喝完有3个瓶盖3个空瓶能换1瓶啤酒声3个瓶盖1个空瓶;喝完4个瓶盖2个空瓶换2瓶啤酒;喝完剩2个空瓶两个瓶盖能换1瓶啤酒剩两个瓶盖;
那么这个实现的话主要是看瓶盖数和空瓶数来实现的,
var cap = 5;
var bottle = 5;
var num = 5;
while(cap>=4||bottle>=2){
num=num+Math.floor(cap/4)+Math.floor(bottle/2);
var t = cap;
var s = bottle;
cap = t- (Math.floor(t/4))*4 + Math.floor(t/4)+Math.floor(s/2);
bottle = s - (Math.floor(bottle/2))*2 + Math.floor(t/4)+Math.floor(s /2);
};
num
15
}没思路了,谁给改改//修改代码如下,输出是15
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
4个瓶盖换1瓶,一个瓶盖值 5毛钱,同样一个空瓶值 1块钱。
所以一瓶啤酒只值 5 毛钱。
所以,如果允许先借几瓶,喝完再还瓶盖和瓶子的话,十块钱可以喝 20 瓶(20恰好是4和2的整倍数)。
感谢大家的支持,更新一个方程吧,假设可以借 x 瓶,则有