一、题⽬链接
二、解法(贪⼼)
贪⼼策略:
分情况讨论:
a. 遇到 5 元钱,直接收下;b. 遇到 10 元钱,找零 5 元钱之后,收下;c. 遇到 20 元钱:i. 先尝试凑 10 + 5 的组合;ii. 如果凑不出来,拼凑 5 + 5 + 5 的组合;
三、C++ 算法代码:
class Solution {
public:
bool lemonadeChange(vector<int>& bills) {
//定义三种钱
int five_meony=0;
int ten_meony=0;
int twenty_meony=0;
//顾客排队购买
for(int i=0;i<bills.size();i++)
{
if(bills[i]==5)
{
five_meony++;
}
else if(bills[i]==10)
{
five_meony--;
ten_meony++;
if(five_meony<0)
{
return false;
}
}
else if(bills[i]==20)
{
twenty_meony++;
//第一种情况,找10+5
if(ten_meony>0)
{
ten_meony--;
five_meony-=1;
}
else
{
five_meony-=3;//第二种情况,找5+5+5
}
if(five_meony<0)
{
return false;
}
}
}
return true;
}
};