原题链接:汽水瓶
解题思路:
已有空瓶子数是否小于一,小于不可换汽水;返回;
已有空瓶子数等于二,可换一瓶;
已有的空瓶子数%3求出剩下的空瓶子;
已有的空瓶子数/3求出可换的汽水数;
把剩下的空瓶子加上换的汽水数作为新的已有的空瓶子数,递归重复执行上述操作;
期间记录换的汽水瓶数即可;
注意事项:
对于新的数据,要把换的瓶数置0;
参考代码:
#include<stdio.h> int M=0; //记录换的瓶数 void huanping(int c); //用于计算换的汽水瓶数 int main() { int n[1000]; // 瓶子数量 int i=0; scanf("%d",&n[0]); while(n[i]!=0) { i++; scanf("%d",&n[i]); } for(int j=0;j<i;j++) { M=0; huanping(n[j]); printf("%d\n",M); } return 0; } void huanping(int c) { if(c<=1) return; if(c==2) { M++;return ; } int c1; M=M+c/3; c1=c/3+c%3; //compute the number of bottle after exchange huanping(c1); return ; }
0.0分
11 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复