题解 | 二维斐波那契数列

二维斐波那契数列

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

两个基础知识,一个数二维数组,一个是利用动态规划,利用已有的数据求取新的数据。

需要注意的细节是不要弄错了数组范围以及结果要取余数。

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务