在 Python 中检查我们是否可以在我们最喜欢的一天吃最喜欢的糖果的程序

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

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

  • 我们不能吃任何 i 类型的糖果,除非我们已经吃掉了之前 i-1 类型的所有糖果。

  • 我们必须每天至少吃一颗糖果,直到我们吃完所有糖果。

保持这些规则,我们必须为每个查询结果创建一个布尔值数组,如果我们可以在最喜爱的一天中吃掉一个最喜欢的类型的糖果而不吃超过dailyCap_i 的糖果,那么第 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 型糖果,我们将在第 1 天吃一个 0 型糖果

  • 我们每天最多可以吃4颗糖果。如果我们每天吃4颗糖,我们会在第0天吃4颗0型糖,在第1天吃4颗0型1型糖。那么到了第2天,我们只能吃4颗1型2型糖糖果,所以我们不能在第 2 天吃类型 4 的糖果。

  • 我们每天可以吃1颗糖,第13天我们会吃1颗2型糖。

示例

让我们看看以下实现以获得更好的理解 -

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 中检查我们是否可以在我们最喜欢的一天吃最喜欢的糖果的程序 的全部内容, 来源链接: utcz.com/z/350421.html

回到顶部