leetcode-1420-生成数组

题目描述:

 

 

 

 

 

 方法:动态规划:

class Solution:
    def numOfArrays(self, n: int, m: int, k: int) -> int:
        mod = 10 ** 9 + 7
        
        dp = [[[0] * (k + 1) for _ in range(m + 1)] for _ in range(n)]
        
        for i in range(1, m + 1):
            dp[0][i][1] = 1
        
        for i in range(1, n):
            for j in range(1, m + 1):
                for pre in range(1, m + 1):
                    if pre >= j:
                        for kk in range(k + 1):
                            dp[i][pre][kk] += dp[i - 1][pre][kk]
                    else:
                        for kk in range(1, k + 1):
                            dp[i][j][kk] += dp[i - 1][pre][kk - 1]
        res = 0
        for i in range(m + 1):
            res += dp[-1][i][k]
        return res % mod

 

posted @ 2020-04-21 11:17  oldby  阅读(222)  评论(0编辑  收藏  举报