题目:原题链接(中等)

标签:动态规划

解法 时间复杂度 空间复杂度 执行用时
Ans 1 (Python) O ( N ) O(N) O(N) O ( N ) O(N) O(N) 920ms (62.46%)
Ans 2 (Python)
Ans 3 (Python)

解法一(动态规划):

class Solution:
    def waysToChange(self, n: int) -> int:
        # 处理1分硬币
        dp = [[1] * (n + 1)] + [[0] * (n + 1) for _ in range(3)]

        # 处理5分硬币
        for i in range(n + 1):
            dp[1][i] = dp[0][i] + (dp[1][i - 5] if i >= 5 else 0)

        # 处理10分硬币
        for i in range(n + 1):
            dp[2][i] = dp[1][i] + (dp[2][i - 10] if i >= 10 else 0)

        # 处理25分硬币
        for i in range(n + 1):
            dp[3][i] = dp[2][i] + (dp[3][i - 25] if i >= 25 else 0)

        return dp[-1][-1] % 1000000007