您的位置:首页 > 其它

Acm - 隔壁老王买酒问题

2015-11-30 20:58 225 查看

1.问题描述

隔壁老王到酒庄买酒 , 小二说:我们正在进行优惠活动,每瓶酒2元,2个空瓶换1瓶,4个瓶盖换1瓶,问20块你总共喝多少瓶?

2.解析

以10元为例分析

10块 5瓶 5空瓶 5个盖子 :

1)5个盖子换1瓶 :2个盖子 6个空瓶 ,总数 6 ;

2)6个空瓶换3瓶 : 5个盖子 , 3个空瓶 ,总数 9;

3)5个盖子换1瓶 : 2个盖子 ,4个空瓶 ,总数 10;

4)4个空瓶换2瓶 : 4个盖子 ,2个空瓶,总数 12;

5)4个盖子换1瓶 : 1个盖子 ,3个瓶子,总数 13 ;

6)3个空瓶换1瓶 : 2个盖子 ,2个空瓶,总数 14 ;

7)2个空瓶换1瓶 : 3个盖子 ,1个空瓶,总数 15 ;

3.Java实现

private static void getAll(int money){
int all=money/2;
int gai=all,ping=all;
while(true){
//判断盖
int gall=gai/4;
ping+=gall;
all+=gall;
//剩下的盖子
gai=gai%4+gall;

//判断瓶
int pall=ping/2;
gai+=pall;
all+=pall;
//剩下的瓶子
ping=ping%2+pall;

//结束语句
if(gai<4&&ping<2)
break;
}
System.out.println("可以喝总瓶数 : "+all+" 瓶");
}


结果 :

输入 : 20

输出 : 35
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  acm 算法