有這樣一道智力題:“某商店規定:三個空汽水瓶可以換一瓶汽水。小張手上有十個空汽水瓶,她最多可以換多少瓶汽水喝?”答案是5瓶,方法如下:先用9個空瓶子換3瓶汽水,喝掉3瓶滿的,喝完以後4個空瓶子,用3個再換一瓶,喝掉這瓶滿的,這時候剩2個空瓶子。然後你讓老闆先借給你一瓶汽水,喝掉這瓶滿的,喝完以後用3個空瓶子換一瓶滿的還給老闆。如果小張手上有n個空汽水瓶,最多可以換多少瓶汽水喝?
冰峰不錯呦
思路這套題目主要思路就是遞歸法,簡單來說可以分為以下三種情況:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int bottles= 0;
int GetSodaBottles(int i)
{
int rest;
int temp;
if (i <= 1)
{
return bottles;
}
if (i == 2)
{
bottles = 1;
return bottles;
}
if (i >= 3)
{
rest = i % 3;
temp = i / 3;
bottles = temp;
rest = temp;
GetSodaBottles(rest);
}
}
void main()
{
int a[10];
int ArrNum = 0;
printf("Input the number of bottles:\n");
while (scanf("%d", &a[ArrNum]) != 0 && a[ArrNum] >= 1 && a[ArrNum] <= 100)
{
ArrNum ;
}
printf("The result:\n");
for (int j = 0; j < ArrNum; j )
{
printf("%d\n", GetSodaBottles(a[j]));
bottles = 0;
}
}
C語言每日一練27——自定義函數獲取最大公約數與最小公倍數
C語言每日一練26——金子裝載最優值
C語言每日一練25——求最大連續遞增數字串
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!