考題日期: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;
}
測資: