柠檬水找零---贪心算法(c++)实现

来源:力扣
链接:https://leetcode.cn/problems/lemonade-change/
题目详情:
在柠檬水摊上,每一杯柠檬水的售价为 5 美元。
顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。
每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5 美元。
注意,一开始你手头没有任何零钱。
如果你能给每位顾客正确找零,返回 true ,否则返回 false 。
示例 1:
输入:[5,5,5,10,20]
输出:true
c++实现:

#include 
/**
 *贪心法 
 * 
 *柠檬水找零 
**/ 
using namespace std;
//找零 
string fun(int*bills,int n)
{ 		
		int num5=0;  //5元的数量 
        int num10=0; //10元的数量 
        for(int i=0;i<n;i++)
        {
        	if(bills[i]==5)   //如果为5元 num5++ 
        	 num5++;
        	else if(bills[i]==10)  //如果为10元 判断是否可以找零 
        	{
        		if(num5==0)  //如果一张5元都没有则不能找零 返回false 
        		return "false";
        		num5--;   //否则可以找零  5元减一张 10元加一张 
        		num10++;
			}
			else if(bills[i]==20)
			{
				if(num5>0&&num10>0)  //有10元就用10元  
				{
					num5--;
					num10--;
				}
				else if(num5>=3)  //没有就用三个五元 
				num5-=3;
				else     //都没有则不能找零 返回false 
				return "false";	
			}
        }
    	return "true";

} 
int main() {
	//测试
	int n,i,temp;
	int a[1000];
	cout<<"请输入人数:";
	cin>>n; 
	cout<<"请输入每个人支付的钱:";
	for(i=0;i<n;i++)
		cin>>a[i];
	cout<<fun(a,n)<<endl;
	return 0;
}

运行结果:
柠檬水找零---贪心算法(c++)实现_第1张图片
柠檬水找零---贪心算法(c++)实现_第2张图片

你可能感兴趣的:(其他,贪心算法,c++,算法)