原题链接:汽水瓶
汽水瓶
Sapphire
2022/2/22
解题思路:
不论有多少个空汽水瓶,最后剩余的汽水瓶(n)一共只有三种情况。
剩余1个,可以兑换的汽水数就是n/3;
剩余2个,由于可以向老板借一瓶,所以可以兑换的汽水数是n/3+1;
剩余3个,直接就是n/3+1。
如果剩余4个,则相当于n/3+1后再剩一个,回到情况1。
如果剩余5个,则相当于n/3+1后剩两个,回到情况2。
如果剩余6个,则相当于剩余n/3+1后剩余三个,回到情况3。
注意事项:
n=n/3+n%3的意思是说,比如空汽水瓶有8个,8/3=2代表能换两个,并且喝完后又有一个空的,8%3=2代表还有2个空汽水瓶没换着,那么这时就有2+2=4个空汽水瓶,4>3,进入递归,4/3+4%3==2,是情况2,则count+1,游戏结束。
static int count=0;//由于每进入一次函数,形参会被摧毁,所以用static来修饰,防止count的值在每次调用函数时被遗忘。
参考代码:
#include <stdio.h>
static int count=0;//由于每进入一次函数,形参会被摧毁,所以用static来修饰
int cola(int n)
{
count+=n/3;
n=n/3+n%3;
if(n>3)
{
cola(n);//如果汽水瓶大于三个,则递归,直到算到剩余3个以内为止
}
if(n==1)
return count;
if(n==2||n==3)
return count+1;
}
int main()
{
int n;
int i;
for(i=0;i<10;i++)
{
scanf("%d",&n);
if(n)
count=cola(n);
else
break;
printf("%d\n",count);
count=0;
}
return 0;
}如果这篇文章有帮助到你,希望你给一个赞,加油,陌生人!
0.0分
1 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复