解题思路:构造一个递归函数来求解一组测试用例。递归函数具体为:递归终止条件是——当手中空瓶数量为0或者1时,不能喝到一瓶汽水;当手中空瓶数量为2时,能喝到一瓶汽水并结束“喝汽水”;递归过程是——n个空瓶能够喝到的汽水瓶数等于“n/3”加上“当手中有n-(n/3)*3+n/3只空瓶时能够喝到的汽水瓶数”。
注意事项:用数组存储每次测试用例所产生的结果,然后最后输出
参考代码:
#include <stdio.h> int change(int n) { if(n==1||n==0) return 0; if(n==2) return 1; return n/3+change(n-(n/3)*3+n/3); } int main() { int i=0,n,j; int tmp[10]; while(i<10&&scanf("%d",&n)) { if(n<=0||n>100)break; int sum=change(n); tmp[i]=sum; i++; } for(j=0;j<i;j++) printf("%d\n",tmp[j]); return 0; }
0.0分
0 人评分
十->二进制转换 (C++代码)(零和负数需要特殊处理)浏览:1040 |
C语言训练-邮票组合问题* (C语言代码)......浏览:650 |
C二级辅导-计负均正 (C语言代码)浏览:579 |
C语言程序设计教程(第三版)课后习题8.4 (C语言代码)浏览:545 |
汽水瓶 (C语言代码)浏览:698 |
C语言程序设计教程(第三版)课后习题6.1 (C语言代码)浏览:451 |
C语言程序设计教程(第三版)课后习题6.1 (C语言代码)浏览:595 |
C语言程序设计教程(第三版)课后习题6.7 (C语言代码)浏览:520 |
计算质因子 (C++代码)浏览:1630 |
WU-拆分位数 (C++代码)浏览:779 |