侧边栏壁纸
  • 累计撰写 192 篇文章
  • 累计创建 2 个标签
  • 累计收到 87 条评论

【题解】找零

Allen Best
2023-04-29 / 0 评论 / 0 点赞 / 19 阅读 / 685 字
温馨提示:
本文最后更新于 2023-04-29,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。
Description
有一台自动售票机,每张票卖 5 元。售票机可以接受 5 元、10 元、20元的纸币。接受大面额纸币时,若没有足够的零钱,售票机将拒绝售票并将纸币退还给客户,若有零钱足够,售票机必须出票并且找零。一开始,售票机里没有任何零钱。每位客户只买一张票也只会塞一张纸币。按照购票顺序,给定售票机收到的 n 张纸币的面额。请统计售货机最多能够卖出多少张票。

Format
Input
第一行:单个整数 n 第二行:n 个整数表示 n 名客户分别塞入的纸币面额,保证只能是 5、10、20 中的一个。

Output
单个整数:表示售票机卖出的最多票数。

Samples
输入数据 1
8
10 5 5 5 10 10 20 20
输出数据 1
6
#include<bits/stdc++.h>
typedef unsigned long long ull;
typedef long long ll;
using namespace std;
int main()
{
	int x,ten=0,five=0,n,s=0,i;
	scanf("%d",&n);
	for(i=1;i<=n;i++)
	{
		scanf("%d",&x);
		if(x==5)
		{
			five++;
			s++;
		}
		else if(x==10)
		{
			if(five)
			{
				five--;
				s++;
				ten++;
			}
		}
		else if(x==20)
		{
			if(ten&&five)
			{
				ten--;
				five--;
				s++;
			}
			else if(five>=3)
			{
				five-=3;
				s++;
			}
		}
	}
	printf("%d",s);
	return 0;
}

0

评论区