本文主要是介绍C语言:汽水瓶详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目链接:汽水瓶
#include<stdio.h>
int main()
{//多组输入int n = 0;while ((scanf("%d", &n) != EOF)){if (n == 0){return 0;}else {int count = 0;//计数器int dh = 0;//兑换得到的汽水while (((n + 1) / 3) != 0)//(n+1)/3!=0说明还可以兑换{if (n != 2)//不是借了1瓶换的{dh = n / 3;//如果空瓶数n正好是3的倍数,就不用借了//如果空瓶书n差1个是3的倍数,可以借一个n = dh + n % 3;//兑换前剩下的汽水+兑换得到的汽水=新的空瓶数count += dh;dh = 0;}else//最后剩下2个空瓶,借一个换一个,最后还回去空瓶{count++;break;}}printf("%d\n", count);}}return 0;
}
该题有一个容易让人误解的地方,就是“借一瓶”这个借一瓶不是什么时候都可以借的。
比如你现在29空瓶,它题目虽说是可以借一空瓶,好像就30个空瓶了,然后你一下子兑换10个。
其实不是这样的。它是要求你先用29个空瓶换9个,然后剩余2+9个空瓶,再进行兑换得到3瓶。
3瓶喝完,剩余2+3个空瓶,再进行兑换得到1瓶。
1瓶喝完,剩余2+1个空瓶,再进行兑换得到1瓶。
1瓶再借1瓶也不够兑换,循环结束。示意图如下:
这个借一瓶进行兑换是发生在最后你剩余2空瓶的情况,
你借1空瓶来凑个3空瓶,然后正好换1个,喝完把空瓶还回去。
其他情况,是不允许借的,这也是这个题目比较坑的地方,容易被绕进去。
这篇关于C语言:汽水瓶详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!