C语言- 喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以多少汽水?
来源:互联网 发布:网络打鱼刷分教程 编辑:程序博客网 时间:2024/04/28 22:21
喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以多少汽水。编程实现。
整体思路:用递归的方式实现,每一次递归表示本次可以购买汽水的瓶数(M)。首先判断M是否是能够全部兑换完(M为偶数),分两种情况:
如果可以(M为偶数),再次进行 M/2 的递归,表示本次M个瓶子兑换 M/2 个汽水;
如果不可以(M为奇数),在这里我们进行一个判断(flag:看在本次兑换之前的兑换中是否有多余的一个空瓶子,初值为0),如果flag为0(没有多余的),那么本次兑换留下一个空瓶子,即flag=1(本次留下一个不进行兑换),以供下次兑换使用;如果flag为1,那么本次兑换,加上这个瓶子,进行兑换,即flag=0,表示之前留下的空瓶子已被用掉。
直到 2*M + flag 小于2,不能再兑换为止。
代码实现(Visual Studio 2017)
//喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以多少汽水。编程实现。#include<stdio.h>#include<windows.h>int Buysoda(int M){ static int flag = 0;//flag作为一个判断,看在本次兑换之前的兑换中是否有多余的一个瓶盖 if (2 * M + flag < 2) //判断能否购买汽水 { return 0; } if (M % 2 == 0)//M瓶汽水的瓶盖是偶数,本次兑换刚好换完 { return M + Buysoda(M / 2); } else if (M % 2 == 1 && flag == 0)//M瓶汽水的瓶盖是奇数,且没有多余的瓶盖,留下一个瓶盖,剩下的全部兑换 { flag = 1;//表示本次兑换剩下一个瓶盖,提供下次兑换 return M + Buysoda(M / 2); } else if (M % 2 == 1 && flag == 1)//M瓶汽水的瓶盖是奇数,且有多余的瓶盖,加上这个瓶盖一起兑换 { flag = 0;//之前的瓶盖已被用掉 return M + Buysoda(M / 2 + 1); }}int main(){ int money = 20; int num = 0; num = Buysoda(money); printf("可以买 %d 瓶汽水\n", num); system("pause"); return 0;}
阅读全文
0 0
- 喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以多少汽水。
- C语言- 喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以多少汽水?
- 喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以喝多少汽水。
- 喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以买多少汽水
- 喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以多少汽水。编程实现。
- 喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以多少汽水。编程实现。
- 喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以多少汽水。编程实现。
- .每瓶汽水1元,两个空瓶可以置换一瓶汽水,现在有20元,最多能喝多少瓶汽水
- 【C语言】【面试题】每瓶汽水1元,两个空瓶可以置换一瓶汽水,现在有20元,最多能喝多少瓶汽水
- 【C语言】【面试题】每瓶汽水1元,两个空瓶可以置换一瓶汽水,现在有20元,最多能喝多少瓶汽水
- C语言:每瓶汽水1元,两个空瓶可以置换一瓶汽水,现在有20元,最多能喝多少瓶汽水。
- 【C语言】每瓶汽水1元,两个空瓶可以置换一瓶汽水,现在有20元,最多能喝多少瓶汽水。
- 假设每瓶汽水1块钱,两个空瓶可以换一瓶汽水,小明现有20元,最多可以喝多少瓶汽水
- 每瓶汽水1元,两个空瓶可以置换一瓶汽水,现在有20元,最多能喝多少瓶汽水。(编程实现)。
- 编程实现:每瓶汽水1元,两个空瓶可以置换一瓶汽水,现在有20元,最多能喝多少瓶汽水
- 每瓶汽水1元,两个空瓶可以置换一瓶汽水, 现在有20元,最多能喝多少瓶汽水。(编程实现)。
- 面试,递归:买汽水,1块钱可以买1瓶汽水,2个空瓶可以换一瓶汽水,3个瓶盖可以换一瓶汽水,问:20块可以买到多少瓶汽水
- 一瓶汽水1元,两瓶汽水可换一瓶,现有20元,最多可喝多少瓶汽水
- 逆序数
- 《新一代人工智能发展规划》全面启动:科技部公布首批新一代人工智能开放创新平台名单
- 十进制浮点数转成二进制(IEEE 754 在线计算器)
- 爱奇艺火爆的背后,个性化推荐排序是如何配合的?
- iOS 程序图标的右上角显示数字设置办法
- C语言- 喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以多少汽水?
- HHUOJ_1004: 台球碰撞
- QSlider change with double values(Qt滑动进度条显示小数)
- Spring基础知识汇总——Java开发必看
- 关于电影《黑客帝国》
- 欢迎使用CSDN-markdown编辑器
- java反射
- mac使用ngrok将本地Web服务映射到外网
- 一般人不告诉的精通linux系统秘籍