题解 | #汽水瓶#
汽水瓶
http://www.nowcoder.com/practice/fe298c55694f4ed39e256170ff2c205f
方法一:根据题目条件循环判断
#include <stdio.h>
int main()
{
int num = 0;
while(scanf("%d", &num))
{
int ret = 0;
if(num == 0)
{
break;
}
while(num > 1) //1个空瓶==0
{
if(num >= 3)
{
num -= 3; //少3个空瓶
ret++; //多1个汽水
num++; //多1个空瓶
}
else if(num == 2)
{
ret++; //可换1个汽水
num = 0;
}
}
printf("%d\n", ret);
}
return 0;
}
方法二:嵌套
#include <stdio.h>
int nester(int n) //函数嵌套
{
int ret = 0;
int x = 0;
int y = 0;
if(n == 1)
{
ret = 0;
}
else if(n == 2)
{
ret = 1;
}
else
{
x = n % 3; //剩余几个空瓶
y = n / 3; //喝完有几个空瓶
ret = y;
ret += nester(x+y); //嵌套函数
}
return ret;
}
int main()
{
int num = 0;
while(scanf("%d", &num))
{
int ret = 0;
if(num == 0)
{
break;
}
ret = nester(num);
printf("%d\n", ret);
}
return 0;
}