在Python中计算n位数的步数数字的程序

在Python中计算n位数的步数数字的程序

假设我们有一个数字n,我们必须找到n位数字的步数数字的数量。正如我们所知,当所有相邻数字的绝对差为1时,称一个数字为步数数字。因此,如果一个数字是123,则这是一个步数数字,但124不是。如果答案很大,则返回结果mod 10^9 + 7。

因此,如果输入为n = 2,则输出将为17,因为步数数字是[12,23,34,45,56,67,78,89,98,87,76,65,54,43,32,21,10]

为了解决这个问题,我们将执行以下步骤 –

  • m := 10^9 + 7
  • 如果n和0相同,则
    • 返回0
  • 如果n和1相同,则
    • 返回10
  • dp:大小为10的列表,填充值为1
  • 迭代n-1次,执行以下步骤
    • ndp:大小为10的列表,填充值为0
    • ndp [0]:= dp [1]
    • 对于i在1到8的范围内进行以下操作
      • ndp [i]:= dp [i-1] + dp [i + 1]
    • ndp [9]:= dp [8]
    • dp:= ndp
  • 返回(从索引1到结尾的所有dp数字的总和)mod m

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

示例

class Solution:
  def solve(self, n):
     m = (10 ** 9 + 7)
     if n == 0:
        return 0
     if n == 1:
        return 10
     dp = [1] * 10
     for _ in range(n - 1):
        ndp = [0] * 10
        ndp[0] = dp[1]
        for i in range(1, 9):
           ndp[i] = dp[i - 1] + dp[i + 1]
        ndp[9] = dp[8]
        dp = ndp
     return sum(dp[1:]) % m

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

输入

3

输出

32

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程