该程序计算我们可以在Python中使用语法规则制作的字符串数

假设我们有一个数字n,我们必须找到可以使用以下规则生成的长度为n的字符串数-

  • 每个字符都是小写的元音[a,e,i,o,u]

  • “ a”后面只能跟一个“ e”

  • “ e”后面只能加上“ a”和“ i”中的任何一个

  • “ i”后面不能跟另一个“ i”

  • “ o”后面只能加上“ i”和“ u”中的任何一个

  • “ u”后面只能跟一个“ a”

如果结果很大,则将结果修改为10 ^ 9 + 7。

因此,如果输入类似n = 2,则输出将为10,因为我们可以生成以下两个字母字符串:[“ ae”,“ ea”,“ ei”,“ ia”,“ ie”,“ io”,“ iu”,“ oi”,“ ou”,“ ua”]

为了解决这个问题,我们将遵循以下步骤-

  • m = 10 ^ 9 + 7

  • 如果n等于0,则

    • 返回0

  • 定义五个变量a,e,i,o,u,最初均为1

    • 一个:= e + i + u

    • e:= a + i

    • 我:= e + o

    • o:=我

    • 你:= i + o

    • 对于_在0到n-1的范围内,执行

  • 返回(a + e + i + o + u)mod m

让我们看下面的实现以更好地理解-

示例

class Solution:
   def solve(self, n):
      m = (10 ** 9 + 7)
      if n == 0:
         return 0
      a = e = i = o = u = 1
      for _ in range(n-1):
         a, e, i, o, u = e+i+u, a+i, e+o, i, i+o
      return (a + e + i + o + u) % m

ob = Solution()print(ob.solve(3))

输入值

3

输出结果

19
猜你喜欢