啤酒2元一瓶,4个10元瓶盖问题代码实现换一瓶,2个空瓶换一瓶,10元钱可以喝几瓶

查看: 2858|回复: 6
求解! 一瓶啤酒2块钱,两个瓶盖送一瓶,四个空瓶换一瓶。 20元一共可以喝几瓶?
马上注册,享用更多功能,轻松玩转论坛!
才可以下载或查看,没有帐号?
求解! 一瓶啤酒2块钱,两个瓶盖送一瓶,四个空瓶换一瓶。 20元一共可以喝几瓶?
可以喝26瓶,喝多才不怕呢……
伪命题,矛锦大只阁乸随街跳个。之前有种啤酒开盖有奖系奖半瓶个,换言之即系还要继续买才有可能有机会饮得到巨个支酒…
思试紧有2蚊鸡一瓶个啤酒吖
40瓶。老板来40瓶,喝完盖子换20瓶,瓶子换10瓶,给20元抵10瓶(表示要吐了)
思试紧有2蚊鸡一瓶个啤酒吖
好似好犀利紧喔~& &不要理我,我只是为了拿分走人。
微信扫一扫关注公众号美女游轮上晒美腿,拼出人体花朵,长腿林立致青春。
智障老人2012年被警方认定已死亡,3年后却又回来了。
声明:本文由入驻搜狐公众平台的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场。
  出道题大家做一下,很简单,加减乘除。目的:防老年痴呆症。题目:啤酒2块钱一瓶,4个瓶盖换1瓶,2个空瓶换1瓶,问10块钱可以喝几瓶啤酒?
欢迎举报抄袭、转载、暴力色情及含有欺诈和虚假信息的不良文章。
请先登录再操作
请先登录再操作
微信扫一扫分享至朋友圈
搜狐公众平台官方账号
生活时尚&搭配博主 /生活时尚自媒体 /时尚类书籍作者
搜狐网教育频道官方账号
全球最大华文占星网站-专业研究星座命理及测算服务机构
内涵段子,内涵图,最新笑话,让你缓解压力,放松心情。
53555文章数
主演:黄晓明/陈乔恩/乔任梁/谢君豪/吕佳容/戚迹
主演:陈晓/陈妍希/张馨予/杨明娜/毛晓彤/孙耀琦
主演:陈键锋/李依晓/张迪/郑亦桐/张明明/何彦霓
主演:尚格?云顿/乔?弗拉尼甘/Bianca Bree
主演:艾斯?库珀/ 查宁?塔图姆/ 乔纳?希尔
baby14岁写真曝光
李冰冰向成龙撒娇争宠
李湘遭闺蜜曝光旧爱
美女模特教老板走秀
曝搬砖男神奇葩择偶观
柳岩被迫成赚钱工具
大屁小P虐心恋
匆匆那年大结局
乔杉遭粉丝骚扰
男闺蜜的尴尬初夜
客服热线:86-10-
客服邮箱:评论该主题
作者:您目前是匿名发表 &
作者:,欢迎留言
提示:用户在社区发表的所有资料、言论等仅代表个人观点,与本网站立场无关,不对您构成任何投资建议。用户应基于自己的独立判断,自行决定证券投资并承担相应风险。初测15瓶——————————————————————每获得一瓶酒,可以有三种方式:1. 花2块钱买2. 用2酒瓶换3. 用4瓶盖换将每获得一瓶酒并喝掉它视为一个步骤,整个消费过程由有限有序步骤组成,每一步有三种执行方式。考察任一步骤前后“酒瓶和瓶盖的总个数(记为N)”的变化。很容易得到若该步采取方式1,则N+2;若该步采取方式2,则N不变;若该步采取方式3,则N-2。考虑初态(即第一步之前):这不是废话么,N=0。因此,每一步之后N总是偶数。考虑末态(即最后一步之后)。这不是废话么,末态当然是消费者钱和酒瓶和瓶盖都不够,再也搞不到酒的时候呗。钱不能增加,所以末态金钱0;最后一步喝了一瓶酒,所以末态至少有1个瓶盖和1个酒瓶。不仅如此,由于每一步都喝了一瓶酒,所以每一步之后都至少有1瓶盖和1酒瓶。因此末态时N≥2且N为偶数。1. N≥6时,瓶盖数≥4和酒瓶数≥2必有至少一个成立,这他么显然不是末态啊。2. N=2时,瓶盖数=酒瓶数=1。若最后一步采用方式1,那之前N=0(总步骤数显然大于1),矛盾;若最后一步采用方式2,则之前瓶盖数为0,矛盾;若最后一步采用方式3,则之前酒瓶数为0,矛盾。总而言之N=2不可能是末态。于是末态的时候只能有N=4;符合末态条件的N=4只有1酒瓶+3瓶盖。附:金钱0。——————————————————————接下来有了理论支持就可以暴力求解最大值了。设一瓶酒里的酒价值x,酒瓶价值y,瓶盖价值z,随手列个三元一次方程组解得x=1/2,y=1,z=1/2 (单位软妹币元)于是:初态你有10元,末态你有2.5元。整个消费过程是等价交换,消失的那些钱去哪儿了?变成酒进肚儿了呗。7.5÷1/2=15。——————————————————————PS:这酒厂家黑心商,差评 (?Д?)?
设一瓶酒里的酒价值x,酒瓶价值y,瓶盖价值z,&br&x+y+z=2&br&2y=2&br&4z=2&br&解得x=0.5,y=1,z=0.5,&br&10/0.5=20,最多可喝20瓶啤酒。&br&具体步骤如下:&br&10元买5瓶酒,5个酒瓶,5个瓶盖&br&4个酒瓶换2瓶酒,3个酒瓶,7个瓶盖&br&2个酒瓶换1瓶酒,2个酒瓶,8个瓶盖&br&2个酒瓶换1瓶酒,8个瓶盖换2瓶酒,3个酒瓶,3个瓶盖&br&2个酒瓶换1瓶酒,2个酒瓶,4个瓶盖&br&2个酒瓶换1瓶酒,4个瓶盖换1瓶酒,2个酒瓶,2个瓶盖&br&2个酒瓶换1瓶酒,1个酒瓶,3个瓶盖&br&借5瓶酒,6个酒瓶,8个瓶盖&br&6个酒瓶换3瓶酒,8个瓶盖换2瓶酒,还5瓶酒,没有欠账,没有剩余。&br&共喝5+2+1+1+2+1+1+1+1+5=20瓶酒。&br&&br&&br&Update:&br&想了一下,刚才的步骤实在过于繁琐,更新如下:&br&10元买5瓶酒,借15瓶酒,20个酒瓶,20个瓶盖&br&20个酒瓶换10瓶酒,20个瓶盖换5瓶酒,还15瓶酒,没有欠账,没有剩余。&br&共喝20瓶酒。
设一瓶酒里的酒价值x,酒瓶价值y,瓶盖价值z,x+y+z=22y=24z=2解得x=0.5,y=1,z=0.5,10/0.5=20,最多可喝20瓶啤酒。具体步骤如下:10元买5瓶酒,5个酒瓶,5个瓶盖4个酒瓶换2瓶酒,3个酒瓶,7个瓶盖2个酒瓶换1瓶酒,2个酒瓶,8个瓶盖2个酒瓶换1瓶酒,8个瓶…
public class Test {&br&&br& /**&br&
* @param args&br&
*/&br& public static int all = 5;&br& public static int leftB&br& public static int leftT&br& public static void main(String[] args) {&br&
all = all + drink(5,5);&br&
System.out.println(&总共能喝&+all);&br&
System.out.println(&剩下酒瓶个数&+leftBottle);&br&
System.out.println(&剩下盖子个数&+leftTop);&br& }&br&&br& public static int drink(int bottle, int top) {&br&
if(bottle &=2 || top &=4){&br&
leftBottle = (bottle/2)+(bottle%2)+(top/4);&br&
leftTop = (top/4) + (top%4) + (bottle/2);&br&&br&
(bottle/2) + (top/4) + drink(leftBottle,leftTop);&br&
return 0; &br& }&br&}&br&&br&&br&运行结果:&br&总共能喝15&br&剩下酒瓶个数1&br&剩下盖子个数3&br&&br&&br&如果可以赊账,则是1楼的答案:20瓶
public class Test { /**
* @param args
*/ public static int all = 5; public static int leftB public static int leftT public static void main(String[] args) {
all = all + drink(5,5);
System.out.println("总共能喝"+all);
已有帐号?
无法登录?
社交帐号登录
So Wie Wir K?mpfen16:36 提问
啤酒一瓶2元,二个空瓶可以换一瓶啤酒,四个瓶盖也可以换一瓶啤酒,现在有10元钱,可以最多喝几瓶啤酒
怎么写java程序实现下面的问题:
啤酒一瓶2元,二个空瓶可以换一瓶啤酒,四个瓶盖也可以换一瓶啤酒,现在有10元钱,可以最多喝几瓶啤酒
按时间排序
public static int Drink(int n,int d,int p,int total){
int drink = n&&1;
int leftd = d + drink%2;
int leftp = p + drink%4;
int s = drink&&1;
int f = drink&&2;
if(s&0||f&0){
total = Drink(drink, leftd, leftp,total);
total + drink + s +
public static void main(String[] args) {
System.out.println(Drink(10, 0, 0, 0));
少年 试试看看
public static int getbeer(int num)
int sum =//初始化总数
//瓶数大于等于2时,可以换
while(num&=2)
//新一次更换后总瓶数为更换前瓶数与瓶数/2的和
sum=sum+num/2;
//这是为了保证不会因为奇数瓶摩2少掉一个空瓶
if(num%2==1)
num=num/2;
//这就是结果
这道题根本没有编程的必要,因为它不具备普适性。
可以考虑把单价,钱,换取规则都作为输入,最终可以喝的啤酒瓶数作为输出。
方法内那么多变量会影响虚拟机执行效率
写注释是个好习惯 代码里不该出现实数的
public class BeerGame {
* 啤酒总数
private static int beerNum = 0;
* 每次增加的啤酒数,包括购买的,用空瓶换取以及瓶盖换取
private static int addBeerNum = 0;
* 当前空瓶数
private static int bottleNum = 0;
* 当前瓶盖数
private static int libNum = 0;
public static void main(String[] args) {
//首次购买增加啤酒数
addBeerNum = 10 && 1;
//啤酒数目增加后依次更改啤酒总数、当前空瓶数以及当前瓶盖数
afterAddBeerNumChange(addBeerNum);
//判断当前空瓶数或瓶盖数是否支持继续兑换
while(bottleNum &= 2 || libNum &= 4){
//空瓶数大于2时可兑换
if (bottleNum &= 2) {
//获取兑换啤酒数
addBeerNum = bottleNum && 1;
//更改当前空瓶数
bottleNum = bottleNum % 2;
//修改啤酒总数、当前空瓶数以及当前瓶盖数
afterAddBeerNumChange(addBeerNum);
//瓶盖数大于4时可兑换
if (libNum &= 4) {
//获取兑换啤酒数
addBeerNum = libNum && 2;
//更改当前瓶盖数
libNum = libNum % 4;
//修改啤酒总数、当前空瓶数以及当前瓶盖数
afterAddBeerNumChange(addBeerNum);
* 啤酒数目增加后操作,依次更改啤酒总数、当前空瓶数以及当前瓶盖数
* @param addBeerNum 增加啤酒数
private static void afterAddBeerNumChange(int addBeerNum){
beerNum += addBeerN
bottleNum += addBeerN
libNum += addBeerN
System.out.println("beerNum = " + beerNum + " bottleNum = " + bottleNum + " libNum = " + libNum);
欢迎批评指正
* * @param args
public static int all = 5;
public static int leftB
public static int leftT
public static void main(String[] args) {
all += drink(5,5);
System.out.println("总共能喝"+all);
System.out.println("剩下酒瓶个数"+leftBottle);
System.out.println("剩下盖子个数"+leftTop);
public static int drink(int bottle, int top) {
if(bottle &=2 || top &=4){
leftBottle = (bottle/2) + (bottle%2) + (top/4);
leftTop = (top/4) + (top%4) + (bottle/2);
(bottle/2) + (top/4) + drink(leftBottle,leftTop);
在网上看到的一个解决方法,我觉得挺棒的
public static int drink(int d,int p,int total){
int leftd = d%2; //剩余空瓶数
int leftp = p%4; //剩余瓶盖数
int s = d&&1;
//空瓶兑酒数
int f = p&&2;
//空盖兑酒数
if(s&0||f&0){
total = drink(leftd+s+f, leftp+s+f,total);
total + s +
public static int input(int n){
return drink( n&&1, n&&1, n&&1);
public static void main(String[] args) {
System.out.println(input(10));
11108关注|450收录
11527关注|1131收录
3032关注|616收录
其他相似问题
相关参考资料

我要回帖

更多关于 10元啤酒瓶盖能喝几瓶 的文章

 

随机推荐