原题链接:汽水瓶
解题思路:
大致思路题目中已经给出,这里不再赘述,只讲如何具体实现:
假设有 n 个空瓶子,我们假定先将这 n 个空瓶子尽可能的全部换成饮料,设可以换成 m 瓶饮料,此时未使用的空瓶子个数为 n-m 个,
未使用的空瓶子个数(n-3*m) + m 瓶饮料可以换成的空瓶子(m)为此轮过程所剩到的空瓶子数,也就是下轮开始时的新空瓶子数;
当所剩瓶子数大于等于2时,循环可以继续进行,当所剩瓶子数为 2 时,就只能再换一瓶饮料了,循环结束;
所需变量:
输入的空瓶数:n;
每轮循环中可以换得的饮料数(同样是所换饮料产生的空瓶子数):tt;
循环过程中兑换的饮料总数:temp;
每轮循环后所剩的空瓶子数(同样是下轮循环新的空瓶子数):res;
参考代码:
//题目 1072: 汽水瓶 #include using namespace std; int chuli(int n) { int temp=0; int res=n; int tt=0; //剩余两个依然可以找老板借 while(res>=2) { //tt是一个及其关键的数据,用来存放上次剩的空瓶子可以再换几瓶(同样还剩几个空瓶子) tt = res/3; //temp是可以换几瓶 temp += tt; //未使用的空瓶子数 res = res%3; //换的新的瓶子又是新瓶子 res += tt; //此时的res就是换完喝完一次还剩的瓶子 ,这一行代码没有意义 res=res; //处理res=2时的情况,比较特殊 if(res==2) { temp+=1; res=0; } } return temp; } int main(){ int n; while(cin>>n) { if(n==0) { break; } //用来存储结果 int result=0; //开始处理 result=chuli(n); cout<<result<<endl; } return 0; }
感谢大家的阅读,如果感觉对您有帮助,请动动小手点个赞呗!
0.0分
1 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复