考題日期:2017/09/26
題號:11264
星等:2
語言:C++
題目:
題意:
某個國家市面上流通的硬幣共有 n 種,假設從該國銀行提領X元,而銀行會以下列演算法兌換硬幣:
withdraw(x) {
if(X == 0) return;
令Y為其值不超過X且面額最大的硬幣。
給客戶一個Y元的硬幣。
withdraw(X-Y);
}
請問最多能在一次的提領中拿到幾種的貨幣。
程式:
#include <iostream>
using namespace std;
int main()
{
    int test,coin;
    cin>>test;
    while(test--)
    {
        cin>>coin;
        int C[coin];
        for(int i = 0 ; i < coin ; i++)
        {
            cin>>C[i];
        }
        int all = 2,money = 1;
        for(int i = 1 ; i < coin - 1 ; i++)
        {
            if(money < C[i] && money + C[i] < C[i+1])
                {
                    money += C[i];
                    all++;
                }
        }
        cout<<all<<endl;
    }
    return 0;
}
測資: