程序计算python中n位数字的步进数
假设我们有一个数字n,我们必须找到n个数字的步进数。众所周知,当所有相邻数字的绝对差为1时,一个数字称为步进数字。因此,如果数字为123,则为步进数字,但不是124。如果答案很大,则返回结果mod10^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[i]:=dp[i-1]+dp[i+1]
ndp:=大小为10的列表,填充了值0
ndp[0]:=dp[1]
对于1到8的i
ndp[9]:=dp[8]
dp:=ndp
返回(dp[从索引1到结束]的所有数字的总和)modm
让我们看下面的实现以更好地理解-
例
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