问题大概描述:矿泉水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 =