一道面试题

题目: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瓶,这个程序有点问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值