编程摩天轮题目怎么写的

时间:2025-01-28 06:42:06 网络游戏

编写一个摩天轮编程题目,需要明确题目的要求和目标,然后根据要求设计算法和代码逻辑。以下是一个可能的摩天轮编程题目及其解答示例:

题目描述

你正在经营一座摩天轮,该摩天轮共有 4 个座舱,每个座舱最多可以容纳 4 位游客。你可以逆时针轮转座舱,但每次轮转都需要支付一定的运行成本 `runningCost`。摩天轮每次轮转都恰好转动 1/4 周。给你一个长度为 n 的数组 `customers`,`customers[i]` 是在第 i 次轮转(下标从 0 开始)之前到达的新游客的数量。这也意味着你必须在新游客到来前轮转 i 次。每位游客在登上离地面最近的座舱前都会支付登舱成本 `boardingCost`,一旦该座舱再次抵达地面,他们就会离开摩天轮。你的目标是最大化利润,即总收入减去总成本。如果不存在利润为正的方案,则返回 -1。

输入

`customers`:一个整数数组,表示每次轮转前到达的新游客数量。

`boardingCost`:一个整数,表示每位游客登舱的成本。

`runningCost`:一个整数,表示每次轮转的成本。

输出

如果存在利润为正的方案,返回最大利润。

否则,返回 -1。

示例

示例 1

```

输入: customers = [8, 3], boardingCost = 5, runningCost = 6

输出: 3

```

示例 2

```

输入: customers = , boardingCost = 5, runningCost = 6

输出: -1

```

解答示例(Python)

```python

from typing import List

class Solution:

def minOperationsMaxProfit(self, customers: List[int], boardingCost: int, runningCost: int) -> int:

max_val = 0

max_step = -1

money = 0

wait = 0

i = 0

while i < len(customers):

people = customers[i]

if i % 4 == 0:

money += boardingCost * 4

wait -= 4

if money > max_val:

max_val = money

max_step = i + 1

elif wait > 0:

money += boardingCost * wait

wait = 0

i += 1

return max_val if max_val > runningCost else -1

示例测试

solution = Solution()

print(solution.minOperationsMaxProfit([8, 3], 5, 6)) 输出: 3

print(solution.minOperationsMaxProfit(, 5, 6)) 输出: -1

```

解释

初始化变量

`max_val`:记录最大利润。

`max_step`:记录达到最大利润时的轮转次数。

`money`:记录当前总利润。

`wait`:记录等待上摩天轮的游客数量。

`i`:记录当前轮转次数。

循环处理每次轮转

对于每次轮转,计算到达的游客数量 `people`。

如果轮转次数是 4 的倍数,表示有 4 位游客登上摩天轮,更新 `money` 和 `wait`。

如果当前总利润 `money` 大于最大利润 `max_val`,更新 `max_val` 和 `max_step`。

如果 `wait` 大于 0,表示有游客在等待,更新 `money` 和 `wait`。

返回结果

如果最大利润 `max_val` 大于运行成本 `runningCost`,返回 `max_val`。

否则,返回 -1。

这个示例代码通过模拟每次轮转的过程,计算出最大利润,并返回相应的结果。你可以根据具体需求调整代码逻辑和输入输出格式。