题解 | 二维斐波那契数列
二维斐波那契数列
https://www.nowcoder.com/practice/a1951ca9431646ff8f9bc6f6d24d1e0a
while True:
try:
mdo = 10**9+7
n, m = map(int, input().strip().split())
dp = [[0]*(m+1) for _ in range(n+1)]
# 第0行不考虑,直接从第一行开始
# 初始化
# dp[1] = 1,不能这样写,怎么能让一行变成1呢?
for i in range(1, n+1):
dp[i][1] = 1
# 初始化第一列,令其都为1
for i in range(1, m+1):
dp[1][i] = 1
# 初始化第一行,令其都为1
for i in range(2, n+1):
for j in range(2, m+1):
dp[i][j] = (dp[i][j-1]+dp[i-1][j]) % mdo
print(dp[n][m])
except:
break
两个基础知识,一个数二维数组,一个是利用动态规划,利用已有的数据求取新的数据。
需要注意的细节是不要弄错了数组范围以及结果要取余数。