解题思路:
1.n==1时,兑换0瓶;
2.n==2时,根据题意可以兑换1瓶;
3.n==3时,可以兑换1瓶;
4.n==4时,可以兑换2瓶;
以此类推......可得递归公式为f(n) = f(n - 2) + 1(n >=3 ),该公式可以理解为,从最开始的n个空瓶中拿出三个空瓶(此时空瓶剩余数量为(n - 3)),兑换了1瓶汽水(为递归公式中的1),喝掉之后空瓶子的数量为(n-3 + 1),这(n - 2)个瓶子可兑换的汽水数量为f(n - 2)......所以最终递推公式为:f(n) = f(n - 2) + 1(n >=3 )
注意事项:
参考代码:
#include<stdio.h>
int f( int n )
{
if( n == 1 )
return 0;
else if( n == 2 )
return 1;
else
return f(n-2) + 1;
}
int main()
{
int n, a[100], i, j;
for(i = 0; ;i++)
{
scanf("%d",&n);
if( n != 0 )
a[i] = n;
else
break;
}
for (j = 0; j < i; j++)
{
printf("%d\n",f( a[j] ));
}
return 0;
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复