现在Mr.狠人有20块钱,去买喝汽水喝,1瓶汽水1元,2个空瓶可以换一瓶汽水,那么Mr.狠人可以喝多少瓶汽水?
有同学是不是就直接把这个问题看作一个简单的数学问题,写个方程就解决了,但我们要考虑到我们一定要有两个空瓶才能换一瓶新的。
这边Mr.狠人给大家提供第一种思路,我们汽水一瓶一瓶买,积攒到两个空瓶就拿去换新汽水,直到20元花光
思路理清是不是代码就到嘴边了
//喝汽水问题
int main()
{
int money = 20;
int count = 0;
int empty = 0;
while (money)//还有钱我们就一直喝
{
money--;//买一瓶汽水
count++;//喝一篇汽水
empty++;//手头空瓶数量加一
if (empty == 2)
{
empty -= 2;//兑换
count++;//喝掉兑换来的这一瓶
empty++;//喝完又多了一个空瓶
}
}
printf("%d", count);
}
代码这样就已经正确了,但empty-2然后empty又+1 我们是不是可以精简一下
//喝汽水问题
int main()
{
int money = 20;
int count = 0;
int empty = 0;
while (money)
{
money--;
count++;
empty++;
if (empty == 2)
{
empty--;//精简后
count++;
}
}
printf("%d", count);
}
这样我们就算出Mr.狠人用20块钱就能喝39瓶汽水了
第二种思路呢就是我先拿20块钱买20瓶水,喝完以后拿20个空瓶兑换10瓶水,喝完再用10个空瓶兑换5瓶水以此类推
//喝汽水问题
int main()
{
int money = 20;
int count = money / 1;//一块钱一瓶把钱全用了,然后都喝了
int empty = count;
//兑换
while (empty > 1)//至少要两个空瓶才能兑换汽水
{
count = count + empty / 2;
empty = empty / 2 + empty % 2;//没兑换的空瓶也别遗漏了
}
printf("%d", count);
return 0;
}
结果还是39没有错~大家也可以切换总金额跑代码试试看
觉得有帮助的朋友可以点个赞,评论支持一下!