问题大概描述:矿泉水1块钱1瓶,喝完以后,2个空瓶子可以换一瓶新矿泉水,4个瓶盖也可以换一瓶新矿泉水。问:花10块钱最后最多能得多少瓶矿泉水。

钱不是问题,主要是考虑刚开始能买多少瓶矿泉水,这里是10瓶,既然写程序,就n瓶吧。

大致思路如下:

先把n个矿泉水全部拆分成空瓶和盖子,就是当前拥有的所有的空瓶和盖子。

可以用while循环,结束条件是(经过一轮瓶子和瓶盖的兑换活动后)当前的兑换后的所有瓶盖和瓶子都不足以再次兑换新矿泉水。

循环:1.瓶盖和空瓶用来兑换矿泉水

2.先用瓶盖兑换m1个矿泉水

3.再用空瓶兑换m2个矿泉水

4.整理当前拥有所有的瓶盖数,空瓶数,以及累积的矿泉水总数:矿泉水总数+m1+m2,瓶盖总数 - m1*4 + m1+m2 ,空瓶总数 - m2*2 +m1+m2;

代码如下,输入初始啤酒数目,返回最终数目。

以下是while循环解决方法:

题中的beer是指的啤酒,矿泉水啤酒都一样。

int maxBox(int beerNum)
{int allBox = beerNum;int allGai = beerNum;int allBeer = beerNum;while(allBox >= 2 || allGai >= 4){int x = allBox % 2;int y = (allBox - x) / 2;int a = allGai % 4;int b = (allGai - a) / 4;allBox = x + y + b;allGai = a + b + y;allBeer += y + b;}return allBeer;
}

还要一个递归解决方法,其实思维上来看也不算递归,就是while循环的一个变形,刚好研究递归,就顺便写着玩玩。

int maxBox_recursion(int allBox,int allGai,int allBeer)
{if(allBox < 2 && allGai < 4){return allBeer;}else{int x = allBox % 2;int y = (allBox - x) / 2;int a = allGai % 4;int b = (allGai - a) / 4;allBox = x + y + b;allGai = a + b + y;allBeer += y + b;return maxBox_recursion(allBox,allGai,allBeer);}
}

关于矿泉水空瓶子和瓶盖兑换矿泉水的问题解决算法相关推荐

  1. 算法 啤酒 酒瓶 瓶盖 兑换问题

    今天有人在java交流群里面有人问到一个算法问题: 一个算法题: 啤酒2块钱1瓶, 4个瓶盖换1瓶 2个空瓶换1瓶 问:10块钱可以喝几瓶? 首先,可以用10元买下5瓶啤酒,然后得到5个酒瓶和5个瓶盖 ...

  2. 【原创】10元买啤酒2个空瓶换一瓶4个瓶盖换一瓶经典算法

    转载请注明出处:http://blog.csdn.net/li396864285/article/details/51519786 [原创]10元买啤酒2个空瓶换一瓶4个瓶盖换一瓶,经典算法原题目:1 ...

  3. 矿泉水功能突破口-丰收节交易会·李喜贵:遵义谋定水产业

    矿泉水功能突破口-丰收节交易会·李喜贵:遵义谋定水产业 新闻中国采编网 中国新闻采编网 谋定研究中国智库网 经信研究 国研智库 国情讲坛 哲商对话 万权采编:贵州省在"十三五"规划 ...

  4. 深入解析之将100元兑换为1元、5元、10元的零钱,请问有多少种兑换方法

    要将100元兑换为1元.5元.10元的零钱,请问有多少种兑换方法?这道算法题不知不觉走进了我的世界,引起了我极大的兴趣.现在就将我对它的研究分享出来,供大家点评. 看到这个题目的第一感觉就是一个三元一 ...

  5. 15瓶饮料4个空瓶换一瓶_2021江苏公务员考试行测技巧:你会用“空瓶”换水吗?...

    在公务员考试中,除了常见的计算问题.工程问题.行程问题.排列组合等题型外还有一些比较特殊的题型.这些题型的显著特点就是不会用方法的话会非常容易出错,但如果学习会解题的方法就非常的简单了.而中公教育今天 ...

  6. mybatis实现一对多有几种方式_两件塑胶件连接,有哪几种方式实现?

    出于工艺或结构考虑,很多的塑料产品或塑胶部件可能是由不同材料.不同功能的零部件组装而成,两个零件要组装在一起就需要在它们之间设计连接,连接设计的目的就是要根据各种因素设计一种最适宜的连接方法,将零部件 ...

  7. HTML制作手工肥皂页面,用饮料樽DIY简洁香皂盒制作教学

    夏天饮水量多,像普通瓶装水可能一天可以喝掉好几瓶,在补充水分完毕以后大家有没有试过考虑如何将自己最近消费掉的瓶装水樽利用起来呢?如果你擅长变废为宝,那么可以尝试把这些形形色色的废瓶罐改变用途做成其他有 ...

  8. 小白的 Python 修炼手册:入门篇

    Life is short, you need Python.(人生苦短,我用 Python.) --Bruce Eckel 前言 听说现在是全民 Python 的时代,虽然不知道事实如何,但学会 P ...

  9. 双“11”搞促销?用贪心算法来盘他!

    作者 | 王磊 来源 | Java中文社群(ID:javacn666) 转载请联系授权(微信ID:GG_Stone) 这几年商家为了刺激消费是变着花样的推出各种各样的活动,以某多多为首的运营式电商更是 ...

最新文章

  1. ural 1113,jeep problem
  2. MIPS(loongson)linux 中添加系统调用
  3. 同步两个数据库的结构或者数据
  4. Error: pgraster_wkb_reader: grayscale band type 10 unsupported
  5. ZJOI2013 防守战线
  6. 百度云使用第三方工具下载文件
  7. jenkins配置邮箱服务器发送构建结果
  8. js截屏 video_用原生JS和html5进行视频截图并保存到本地
  9. toj 4608 Ball in a Rectangle
  10. 如何在Linux中使用history命令
  11. Pandas index详解
  12. 阿里ai人工智能平台_AI标签众包平台
  13. (鬼刀)记一次异步加载Python爬虫分析
  14. 使用mybatisplus进行分页查询total总为0的原因
  15. 第二章 感受Mac 之美-惊艳从Mac 外设开始,一周后的使用感受
  16. 92-Kafka详解
  17. 服装制图软件测试初学者,服装行业版软件测试文案.ppt
  18. 浅谈软件项目开发过程中的主要项目风险及对策
  19. Nagios汉化页面
  20. 聊聊Hibernate和Mybatis的区别

热门文章

  1. ArcGIS中如何用栅格裁剪栅格
  2. mysql备份命令sequelize_sequelize 数据库迁移命令 migrations
  3. 类淘宝橱窗web应用设计问题
  4. 类淘宝橱窗web应用设计1
  5. Win10初次使用麦克风时该怎么设置才能发挥麦克风应有效果
  6. python中函数包括标准库函数吗_Python标准库(一)
  7. Pytorch实现一个简单分类模型
  8. 2021年一级建造师教材可能会大改?
  9. 《机器学习实战》学习大纲
  10. 脸上只有嘴的飞信为什么败给脸上没嘴的微信