在Python中检查我们是否可以在最喜爱的日子享用最喜爱的糖果的程序

在Python中检查我们是否可以在最喜爱的日子享用最喜爱的糖果的程序

假设我们有一个名为candiesCount的正数值数组,其中candiesCount[i]表示我们拥有第i种糖果的数量。我们还有另一个名为queries的数组,其中queries[i]有三个参数[favoriteType_i,favoriteDay_i,dailyCap_i]。我们有一些规则:

  • 我们从第0天开始吃糖果。

  • 我们不能吃第i种糖果,除非我们吃过了所有前面的(i-1)种糖果。

  • 我们必须每天至少吃一块糖果,直到我们把它们吃完为止。

我们必须遵守这些规则,为每个查询结果构建一个布尔值数组,第i个条目为true,如果我们可以在最喜欢的日子(favoriteDay_i)吃掉最喜欢类型的糖果(favoriteType_i),且每天吃的糖果不超过dailyCap_i。我们可以遵循规则2在同一天吃不同种糖果。

因此,如果输入的是candiesCount = [7,4,5,3,8],queries = [[0,2,2],[4,2,4],[2,13,100]],则输出将是[True,False,True],因为:

  • 如果我们在第0天和第1天吃了2种0型糖果,我们将会在第2天吃一种0型糖果。

  • 我们每天最多可以吃4块糖果。如果我们每天吃4块糖果,我们将在第0天吃掉4块0型糖果和4块0型和1型糖果,在第1天吃掉4块1型糖果和4块2型糖果,因此我们不能在第2天吃第4种糖果。

  • 我们每天只能吃1块糖果,在第13天我们将吃掉第2种类型的糖果。

为了解决这个问题,我们将采取以下步骤:

  • sumcandy:带有一个元素candiesCount[0]的列表。

  • index:1

  • 当index < candiesCount长度时,执行以下操作:

    • 将(sumcandy[index-1] + candiesCount[index])插入到sumcandy的末尾。

    • index := index + 1

  • 在sumcandy的末尾插入0

  • res:一个新列表

  • 对于each in queries,执行以下操作:

    • typ:each[0]

    • day:each[1]

    • cap:each[2]

    • 如果day+1 > sumcandy[typ]或(day+1)*cap <= sumcandy[typ-1],则插入False到res的末尾

    • 否则,插入True到res的末尾

  • 返回res

例子

让我们看下面的实现,以获得更好的理解−

def solve(candiesCount, queries):
   sumcandy = [candiesCount[0]]
   index=1
   while index < len(candiesCount):
      sumcandy.append(sumcandy[index-1] + candiesCount[index])
      index+=1
   sumcandy.append(0)
   res=[]
   for each in queries:
      typ=each[0]
      day=each[1]
      cap=each[2]
      if day+1 > sumcandy[typ] or (day+1)*cap <= sumcandy[typ-1]:
         res.append(False)
      else:
         res.append(True)
   return res

candiesCount = [7,4,5,3,8]
queries = [[0,2,2],[4,2,4],[2,13,100]]
print(solve(candiesCount, queries))

输入

[7,4,5,3,8], [[0,2,2],[4,2,4],[2,13,100]]

输出

[True, False, True]

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程