问题描述
共有n种图案的印章,每种图案的出现概率相同。小A买了m张印章,求小A集齐n种印章的概率。
输入格式
一行两个正整数n和m
输出格式
一个实数P表示答案,保留4位小数。
样例输入
2 3
样例输出
0.7500文章来源:https://www.toymoban.com/news/detail-431393.html
思路
创建m+1行 n+1列的二维数组
若从键盘输入4 3
dp = [
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]
]
python代码文章来源地址https://www.toymoban.com/news/detail-431393.html
#创建二位数组
n,m = map(int,input().split())
#将数组初始化为0
dp = [[0 for i in range(n + 1)] for j in range(m + 1)]
for i in range(1 , m + 1):
for j in range(1 , n + 1):
if i < j :
dp[i][j] = 0
elif j == 1:
dp[i][j] = pow(1 / n ,i - 1)
else:
dp[i][j] = dp[i-1][j] * (1/n) * j + dp[i-1][j-1] * (1/n)*(n-(j-1))
print("{:.4f}".format(dp[m][n]))
到了这里,关于【dp动态规划】印章的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!