在 Python 中查找最大吃苹果数量的程序
假设我们有两个数组,称为days和apples,它们的长度相同。有一种特殊的苹果树,连续n天每天都长苹果。在第i天,它长了apples[i]个苹果,并且在days[i]天后会腐烂,所以我们可以说在第i+days[i]天,苹果会腐烂并且不能食用。在某些日子。如果apples[i]=0,而days[i]=0,则表明在第i天,苹果树没有长出任何苹果。我们一天最多可以吃一个苹果。(我们可以在前n天后继续进食)。在这里,我们必须找到我们可以吃的最大苹果数量。
因此,如果输入类似于apples=[1,2,3,5,2]days=[3,2,1,4,2],那么输出将为7,因为-
在第一天,我们吃了一个在第一天长出来的苹果。
第2天,我们吃了一个在第二天长出来的苹果。
第3天,我们吃了一个在第二天长出来的苹果。但是过了这一天,第三天长出来的苹果就会腐烂。
在第4天到第7天,我们吃第四天长出来的苹果。
示例
让我们看看以下实现以获得更好的理解-
import heapq
def solve(apples, days):
minheap = []
heapq.heapify(minheap)
day = 0
res = 0
for i in range(len(apples)):
day = i
while minheap and minheap[0][0] < day:
heapq.heappop(minheap)
nbrApple = apples[i]
expiration = i + days[i]-1
if nbrApple > 0:
heapq.heappush(minheap, (expiration, nbrApple))
if minheap:
date, apple = heapq.heappop(minheap)
res += 1
if apple > 1:
heapq.heappush(minheap, (date, apple-1))
while minheap:
day += 1
while minheap and minheap[0][0] < day:
heapq.heappop(minheap)
if minheap == []:
break
date, apple = heapq.heappop(minheap)
res += 1
if apple > 1:
heapq.heappush(minheap, (date, apple-1))
return res
apples = [1,2,3,5,2]
days = [3,2,1,4,2]
print(solve(apples, days))输入
[1,2,3,5,2],[3,2,1,4,2]输出结果
7
热门推荐
1 训练狗狗憋尿
2 狗狗追踪训练
3 狗狗训练要多少钱
5 深圳狗狗训练
6 训练狗狗唤回
7 狗狗叫怎么训练
8 狗狗训练班
10 狗狗社会化训练
11 狗狗叫回训练
12 广州狗狗训练学校
13 狗狗训练躺下
14 狗狗随行训练
15 训练狗狗巡回
16 狗狗要怎么训练
17 狗狗喂食训练
18 训练狗狗躺下