• 【leetcode】1155. Number of Dice Rolls With Target Sum


    题目如下:

    You have d dice, and each die has f faces numbered 1, 2, ..., f.

    Return the number of possible ways (out of fd total ways) modulo 10^9 + 7 to roll the dice so the sum of the face up numbers equals target.

    Example 1:

    Input: d = 1, f = 6, target = 3
    Output: 1
    Explanation: 
    You throw one die with 6 faces.  There is only one way to get a sum of 3.
    

    Example 2:

    Input: d = 2, f = 6, target = 7
    Output: 6
    Explanation: 
    You throw two dice, each with 6 faces.  There are 6 ways to get a sum of 7:
    1+6, 2+5, 3+4, 4+3, 5+2, 6+1.
    

    Example 3:

    Input: d = 2, f = 5, target = 10
    Output: 1
    Explanation: 
    You throw two dice, each with 5 faces.  There is only one way to get a sum of 10: 5+5.
    

    Example 4:

    Input: d = 1, f = 2, target = 3
    Output: 0
    Explanation: 
    You throw one die with 2 faces.  There is no way to get a sum of 3.
    

    Example 5:

    Input: d = 30, f = 30, target = 500
    Output: 222616187
    Explanation: 
    The answer must be returned modulo 10^9 + 7.
    

    Constraints:

    • 1 <= d, f <= 30
    • 1 <= target <= 1000

    解题思路:记dp[i][j] 为前i个骰子掷完后总和为j的组合的总数。那么很显然(i-1)个骰子掷完后的总和只能是  (j-d)  ~ (j-1) ,所以有dp[i][j] = sum(dp[i-1][j-d] , dp[i-1][j-d + 1] .... + dp[i-1][j-1]) 。

    代码如下:

    class Solution(object):
        def numRollsToTarget(self, d, f, target):
            """
            :type d: int
            :type f: int
            :type target: int
            :rtype: int
            """
            if target > d*f:
                return 0
            dp = [[0] * (d*f+1) for i in range(d)]
            for i in range(1,f+1):
                dp[0][i] = 1
    
            for i in range(1,len(dp)):
                for j in range(len(dp[i])):
                    for k in range(1,f+1):
                        dp[i][j] += dp[i-1][j-k]
            #print dp
    
            return dp[-1][target] % (10**9 + 7)
  • 相关阅读:
    ios input readonly失效(点击的时候会有光标出现)/禁止输入法弹出问题
    sublime格式化
    菜单栏展开关闭效果(1)
    做数字判断显示相应的图标
    判断img的src为空/点击时候两张图片来回替换
    numpy
    pat甲级1085
    pat甲级1107
    2018.9.8pat秋季甲级考试
    pat甲级1044二分查找
  • 原文地址:https://www.cnblogs.com/seyjs/p/11376741.html
Copyright © 2020-2023  润新知