華爲筆試題汽水瓶:“規定:三個空瓶換一瓶汽水。小張有十個空瓶,她可以換多少瓶汽水喝?”答案是5瓶,方法:先用9個空瓶子換3瓶汽水,喝掉3瓶滿的再換,剩2個空瓶子。老闆借你一瓶汽水,喝掉換一瓶還給老闆

題目描述: 有這樣一道智力題:“某商店規定:三個空汽水瓶可以換一瓶汽水。小張手上有十個空汽水瓶,她最多可以換多少瓶汽水喝?”答案是5瓶,方法如下:先用9個空瓶子換3瓶汽水,喝掉3瓶滿的,喝完以後4個空瓶子,用3個再換一瓶,喝掉這瓶滿的,這時候剩2個空瓶子。然後你讓老闆先借給你一瓶汽水,喝掉這瓶滿的,喝完以後用3個空瓶子換一瓶滿的還給老闆。如果小張手上有n個空汽水瓶,最多可以換多少瓶汽水喝?

本題思路:仔細分析題目,可以發現,剩餘1個或者0個空瓶時,不能換購;剩餘2個時可以換購1瓶;那麼就可以使用遞歸的方法進行,直至最後剩餘1個或者0個或者2個;

#include<iostream>
#include<vector>
using namespace std;
int exchange(int n)
{
    int emp=n;
    if(emp==1||emp==0)
        return 0;
    if(emp==2)
        return 1;
    return (emp/3+exchange(emp/3+emp%3));
}
int main()
{
    int n;
    vector<int>vt;
    while(cin>>n)
    {
        if(n>=1&&n<=100)
            vt.push_back(n);
        if(cin.get()==0)
            break;
    }
    for(int i=0;i<vt.size();i++)
    {
        cout<<exchange(vt[i])<<endl;
    }
    return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章