华为OD机试 C++【转盘寿司】

本文介绍了华为OD机试中一道题目——寿司转盘优惠活动。题目要求根据顾客选择的寿司盘,计算实际得到的总价格。解题思路是使用单调栈,确保栈内元素按价格递减排列,遍历数组比较元素,找到更小的相邻寿司价格,从而更新结果。
摘要由CSDN通过智能技术生成

题目

寿司店周年庆,正在举办优惠活动回馈新老客户。
寿司转盘上总共有 n 盘寿司,prices[i] 是第 i 盘寿司的价格,
如果客户选择了第 i 盘寿司,寿司店免费赠送客户距离第 i 盘寿司最近的下一盘寿司 j,前提是 prices[j] < prices[i],如果没有满足条件的 j,则不赠送寿司。
每个价格的寿司都可无限供应。

输入描述
输入的每一个数字代表每盘寿司的价格,每盘寿司的价格之间使用空格分隔,例如:
3 15 6 14

表示:
第 0 盘寿司价格 prices[0] 为 3
第 1 盘寿司价格 prices[1] 为 15
第 2 盘寿司价格 prices[2] 为 6
第 3 盘寿司价格 prices[3] 为 14
寿司的盘数 n 范围为:1 ≤ n ≤ 500
每盘寿司的价格 price 范围为:1 ≤ price ≤ 1000

输出描述
输出享受优惠后的一组数据,每个值表示客户选择第 i 盘寿司时实际得到的寿司的总价格。使用空格进行分隔,例如:
3 21 9 17

解题思路

使用一个栈来跟踪每个元素的索引。栈中的元素按照价格单调递减排列,即从栈底到栈顶的元素价格依次递减。对输入数组进行两次循环。第一

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

codereasy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值