0

7个回答

1
`````` /**
*
* * @param args
*/
public static int all = 5;
public static int leftBottle;
public static int leftTop;

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);
return  (bottle/2) + (top/4) + drink(leftBottle,leftTop);
}
return 0;
}
``````

1
sinat_35534057 好方法 递归 华为面试题

public static int getbeer(int num)
{
int sum = num;//初始化总数
//瓶数大于等于2时，可以换
while(num>=2)

{
//新一次更换后总瓶数为更换前瓶数与瓶数/2的和
sum=sum+num/2;

//这是为了保证不会因为奇数瓶摩2少掉一个空瓶
if(num%2==1)

sum++;
num=num/2;
}
//这就是结果
return sum;

}

0

0
`````` 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) {
//首次购买增加啤酒数
//啤酒数目增加后依次更改啤酒总数、当前空瓶数以及当前瓶盖数
//判断当前空瓶数或瓶盖数是否支持继续兑换
while(bottleNum >= 2 || libNum >= 4){
//空瓶数大于2时可兑换
if (bottleNum >= 2) {
//获取兑换啤酒数
//更改当前空瓶数
bottleNum = bottleNum % 2;
//修改啤酒总数、当前空瓶数以及当前瓶盖数
}
//瓶盖数大于4时可兑换
if (libNum >= 4) {
//获取兑换啤酒数
//更改当前瓶盖数
libNum = libNum % 4;
//修改啤酒总数、当前空瓶数以及当前瓶盖数
}
}
}

/**
* 啤酒数目增加后操作，依次更改啤酒总数、当前空瓶数以及当前瓶盖数
*/
System.out.println("beerNum = " + beerNum + " bottleNum = " + bottleNum + " libNum = " + libNum);
}
}
``````

0

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);
}
}
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));
}

0

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);
}
}
public static void main(String[] args) {
System.out.println(Drink(10, 0, 0, 0));
}

-1
yuyang199 回复床前明月ali: 刚刚发的这个是对的了，昨天没验证，sorry

yuyang199 回复床前明月ali: 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); } return total + s + f ; } 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)); }

yuyang199 回复yuyang199: 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); } return total + s + f ; } 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)); }

yuyang199 回复床前明月ali: 好像是逻辑出了点问题

yuyang199 回复床前明月ali: 第一轮，n代表钱，d是剩余空瓶数，p是剩余瓶盖数。这样能够算到第一轮drink=5，leftd=1(原因为5个空瓶换了2瓶),leftp为1（5个瓶盖换了1瓶）,s=2,空瓶换的，f为1，瓶盖换的；

xtom0369 少侠求解释，表示看不懂逻辑。而且结果好像有问题，是12还是15呢？

#!/usr/bin/env python2 #-*- coding: utf-8 -*-def calculate_beer(money): total_beer = 0 first_round_num = money / 2 total_beer = +first_round_num bottle_num = first_round_num cap_num
C语言 递归实现 函数 一元钱买一瓶啤酒，两个空瓶换一瓶啤酒.问n元钱能喝多少瓶啤酒？

//啤酒2元1瓶，4个瓶盖可换1瓶，2个空瓶也可换1瓶。请问10元能喝到几瓶啤酒
//啤酒2元1瓶，4个瓶盖可换1瓶，2个空瓶也可换1瓶。请问10元能喝到几瓶啤酒 -(void)beerWithMoney:(NSInteger)money Cap:(NSInteger)cap bottle:(NSInteger)bottle Count:(NSInteger)count{               if(money&amp;lt;2&amp;amp;&amp;amp;cap&amp;lt;4&amp;amp...

python 解决 啤酒2块钱一瓶，2个酒瓶可以换一瓶酒，4个瓶盖可以换一瓶酒 问10块钱可以喝几瓶酒
#!/usr/bin/env python #coding:utf-8 #啤酒2块钱一瓶，2个酒瓶可以换一瓶酒，4个瓶盖可以换一瓶酒 #问10块钱可以喝几瓶酒 def jipingjiu(money): beer = money / 2 # 不考虑找零 money%2 btt, cap = money/2, money/2 #买过酒得到的酒瓶及瓶盖 flag = 1 brr =

【原创】10元买啤酒2个空瓶换一瓶4个瓶盖换一瓶经典算法
10元钱买5瓶啤酒，2个瓶盖换一瓶，4个空瓶换一瓶，10钱到底能买多少瓶啤酒？原创

JAVA算法：啤酒2元一瓶,4个瓶盖可以换一瓶啤酒,2个空瓶可以换一瓶啤酒，输入多少钱可以喝多少瓶？
package com.stxy;import java.util.Scanner;/** * 啤酒2元一瓶,4个瓶盖可以换一瓶啤酒,2个空瓶可以换一瓶啤酒，输入多少钱可以喝多少瓶？ *  *  * @author Administrator *  */public class Test1 {    // 定义一个变量，最终可以喝多少瓶    private static int totalNum...
.NET面试题：大致是，拿N元钱买啤酒，一瓶啤酒3元，2个空啤酒瓶可以换一瓶啤酒，问最后能喝多少瓶酒。(自己敲了一下，写的比较灵活，代码比较陋)
static void Main(string[] args)        {            int aa = 1;//开始            while (aa == 1)            {                Console.Write(&quot;总金额(元)：&quot;);                int n = int.Parse(Console.ReadLine()...
C语言 递归实现 一元钱买一瓶啤酒，两个空瓶换一瓶啤酒.问n元钱能喝多少瓶啤酒？。

java 10元钱买酒2元一瓶，2个瓶子或4个盖子可以兑1瓶酒，最后喝了多少瓶酒

10瓶啤酒 2个空瓶换1瓶 4个瓶盖换1瓶 能喝多少瓶？

/* * 啤酒问题: * 啤酒2元一瓶，4个盖子可以换一瓶，两个空瓶可以换一瓶 * 问10元可以喝多少瓶？ * 剩余多少空瓶和盖子。 * * 分析： * 10元先换5瓶啤酒， * 定义变量 total 保存总的瓶数 * 定义变量 temp 保存每次换到的瓶 * 定义变量 bottleCap 保...

public class Calculation { public static void main(String arg[]){ int beer=calculationBeerAmount(10,2,4,2); System.out.println("10元共喝了" + beer + "瓶啤酒."); } /** * ...

10块钱可以喝多少瓶啤酒
10块钱可以喝多少瓶啤酒啤酒两块钱一瓶，四个盖子可以换一瓶，两个空瓶可以换一瓶。10块钱可以喝多少瓶啤酒？

C#面试题：3个瓶盖换一瓶酒

2个饮料瓶可以换1瓶饮料，4个瓶盖可以换1瓶饮料，1瓶饮料1块钱，问10块钱最多能买喝几瓶饮料
2个饮料瓶可以换1瓶饮料，4个瓶盖可以换1瓶饮料，1瓶饮料1块钱，问10块钱最多能买喝几瓶饮料。 public static void main(String[] args) { int p = 10,q = 10; int i = 10,num = 10; while (i > 0){ i = 0; i = i + p
【编程】两元一瓶饮料，两个空瓶子换一瓶饮料，四个瓶盖换一瓶饮料。求：10元最多能喝到几瓶饮料？

C语言- 喝汽水，1瓶汽水1元，2个空瓶可以换一瓶汽水，给20元，可以多少汽水？

package com.smart; /**  * 现有10元钱,汽水2元一瓶,二个空瓶子换一瓶汽水,求最后能喝多少瓶  * @author Administrator  *  */ public class Think1 { static int exchang=2; static int total=0; public static void main(String[
k个瓶子可以换1瓶酒，要喝n瓶酒，最少需要买多少瓶酒？
k个瓶子可以换1瓶酒，要喝n瓶酒，最少需要买多少瓶酒？

ConsoleApplication.rar

Java面试题：有20块钱，1块钱能买一瓶汽水，2个瓶子能换一瓶汽水，3个瓶盖能换一瓶汽水， 问一共能喝多少瓶汽水。