解题思路:

已有空瓶子数是否小于一,小于不可换汽水;返回;

已有空瓶子数等于二,可换一瓶;

已有的空瓶子数%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 ;

}


点赞(50)
 

0.0分

11 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 14 条评论

likky 6年前 回复TA
没有限制最多十次输入?n超过了100也没有限制?
DQM 6年前 回复TA
其实这题很简单
Manchester 7年前 回复TA
@laolin2333 -.-
laolin2333 7年前 回复TA
讲解很清楚,很棒