本文共 1205 字,大约阅读时间需要 4 分钟。
丑数(Ugly Number)是指只包含质因数2、3和5的数。生成丑数的方法可以通过动态规划来实现。每个丑数可以看作是前一个丑数乘以2、3或5的结果。为了找到第n个丑数,我们可以使用以下方法:
def nthUglyNumber(n): if n == 0: return 0 dp = [1] # dp[0] = 1 for _ in range(n): next_dp = [] for num in dp: for factor in [2, 3, 5]: next_dp.append(num * factor) dp = list(set(next_dp)) # 去重 dp.sort() # 保持有序 return dp[n-1]
为了计算n个骰子点数和的概率,我们可以使用动态规划的方法。每个骰子有6个可能的点数,我们需要计算所有可能的点数和及其对应的概率。
def dicesProbability(n): if n == 0: return [] # 初始化一个一维数组来保存当前骰子的概率分布 dp = [1.0 / 6.0] * (n * 6 + 1) for i in range(1, n + 1): # 创建一个新的数组来保存i个骰子的概率分布 new_dp = [0.0] * (6 * i + 1) for j in range(1, 6 + 1): for k in range(i): new_dp[i + j] += dp[k] * (1.0 / 6.0) dp = new_dp # 计算每个可能的点数和的概率 max_sum = 6 * n min_sum = n result = [0.0] * (max_sum - min_sum + 1) for s in range(min_sum, max_sum + 1): result[s - min_sum] = dp[s] return result
以上方法保证了代码的高效性和正确性,适用于不同的n值。
转载地址:http://wese.baihongyu.com/