首页 > 代码库 > 算法----bonus dumplings
算法----bonus dumplings
题目描述
过年了,妈妈做了100只饺子,其中有10只饺子里面有1块的硬币。
小明依次吃这100只饺子,如果小明连续吃到k个硬币,那么小明得到k-1个硬币。
e.g. 110111表示6只饺子,1表示有硬币,0表示没有。11表示连续吃到2个饺子,那么小明得1个硬币;111连续迟到3个,小明得2个硬币;故,小明共得到3个硬币。
问小明得到的硬币的期望值是多少?
分析
期望定义:
在本题中,随机事件X即为小明最终得到的硬币数目,
- 计算
P(Xi)=cases(x=i)allcases - 计算期望
那么原问题就简化为小明得到硬币k,所有可能的cases的数目。
采用动态规划,子问题定义如下
- f[i][j][k]——前i个饺子,含j个有硬币的饺子,得分是k,且第i个饺子不含硬币,所有可能的情况的总数。
- g[i][j][k]——前i个饺子,含j个有硬币的饺子,得分是k,且第i个饺子含硬币,所有可能的情况的总数。
那么递推公式如下,
- f[i][j][k]—-第i个饺子不包含硬币,所以不用第i个饺子
- f[i][j][k] = f[i-1][j][k] + g[i-1][j][k]
- g[i][j][k]—-第i个饺子包含硬币,那么这个硬币能够得到,取决于第i-1个饺子是否包含硬币
- g[i][j][k] = f[i-1][j-1][k] + g[i-1][j-1][k-1]
代码
1.DP
|
|
2.模拟
可以用计算机模拟下,
|
|
结果大约是0.9左右。
后话
其实,这题的结果在某种程度上有一点违背直觉。期望在0.9左右,也就是说,平均情况下,会有两个连续的1.
其实跟这个题目类似,数学上,有一个有名的悖论:生日悖论。
生日悖论,指如果一个房间里有23个或23个以上的人,那么至少有两个人的生日相同的概率要大于50%。
算法----bonus dumplings
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。