喝酒问题:啤酒2元一瓶 4个瓶盖能换1瓶啤酒,2个空瓶也能换1瓶啤酒

今天被同事问到一个喝酒的问题,题目如下:

啤酒2元一瓶 4个瓶盖能换1瓶啤酒,2个空瓶也能换1瓶啤酒,问:10元钱最多能喝几瓶酒?

于是乎写了一段小代码来解决这个问题:

package test2;
 
import org.junit.Test;
 
public class MyTest {
 
    int maxCount = 0;
 
    @Test
    public void test01() throws Exception {
        recursion(10, 0, 0, 0);
        System.out.println("总数:" + maxCount);
    }
 
    public void recursion(int money, int cap, int bottle, int count) {
        if (cap < 4 && bottle < 2 && money < 2) {
            if (maxCount < count) {
                maxCount = count;
            }
            return;
        }
        if (cap >= 4) {
            recursion(money, cap - 4 + 1, bottle + 1, count + 1);
        }
        if (bottle >= 2) {
            recursion(money, cap + 1, bottle - 2 + 1, count + 1);
        }
        if (money >= 2) {
            recursion(money - 2, cap + 1, bottle + 1, count + 1);
        }
 
        return;
 
    }
 
}

结果是15种.但是百度之后发现有人说是20种.
从实际操作上来说15种已经是最多了.

比较坑爹..........

算是回顾一下递归...

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 有一个问题:每瓶啤酒2元,2个空酒瓶或4个瓶盖可换1瓶啤酒。10元最多可喝多少瓶啤酒? 问题是同一个,但是不同的人...
    小豆丁阅读 127,154评论 5 6
  • 瓶盖换酒问题 二叉树问题无处不在,在微信群里面遇到这样有趣的问题:2元钱可以买一瓶瓶酒,一瓶啤酒喝完可以得到1个空...
    Tony简阅读 4,338评论 0 2
  • 【1】假设有一个池塘,里面有无穷多的水。现有2个空水壶,容积分别为5升和6升。问题是如何只用这2个水壶从池塘里取得...
    sidney_c阅读 4,963评论 0 9
  • 桌子上有妈妈做的似是而非的薯饼,洗得晶莹剔透的黑葡萄放在玻璃碗中,雪白如膏的酸奶盛在瓷碗中。 某个小孩坐在纱帘的桌...
    寰宇查无此人阅读 1,063评论 0 0
  • 齐晓慧-日精进第25天 【体验入】通过这几天抄写笔记,确实是从几个点开始有所领悟。比起之前,学习的思路,方式方法都...
    Alina_qi阅读 1,306评论 0 3

友情链接更多精彩内容