题目:27个小运动员在参加完比赛后,口渴难耐,去小店买饮料,饮料店搞促销,凭三个空瓶可以再换一瓶,他们最少买多少瓶饮料才能保证一人一瓶?
思路:
1.买M瓶饮料的话,那么可以去换M/3瓶饮料。这个时候手中还有M%3+M/3个瓶子。已经喝了M+M/3,可以用递归来做,这个2.这个数目需要用循环来选择。如果去买1瓶,然后看是否满足条件,一一相加。
3.这个题目应该是有公式法
4.当手上有两个空瓶的时候,其实是可以换一瓶,然后在还一空瓶。
程序:
#include<stdio.h>
int count=0;
int test(int t)
{
//这里T是指手头有T个空瓶
//一共可以喝的瓶数
count=count+t;
if(t<=1)return count;
if(t==2)return count+1;
if(t>2){return test(t/3+t%3); }
}
int main(void)
{int t=1;
while(t<40)
{printf("%d %d/n",t,test(t));
t++; count=0; }
getchar();
}
从结果可以看出这个程序有点错误,买36瓶喝55瓶,买35瓶喝57瓶,这个程序有点问题。