为生存而奔跑

   :: 首页 :: 联系 :: 聚合  :: 管理
  271 Posts :: 0 Stories :: 58 Comments :: 0 Trackbacks

留言簿(5)

我参与的团队

搜索

  •  

积分与排名

  • 积分 - 323490
  • 排名 - 74

最新评论

阅读排行榜

评论排行榜

在一条路上有许多格子,有一个人站在1号格子上,他行走时可以跳一个格子,概率为p,也可以跳两个格子,概率为1-p。其中有N(N<=10)个格子是有地雷的,踩到地雷会丧命。问此人安全走出雷区的概率是多少?格子的坐标范围是[1, 100000000]。

由于坐标的范围很大,因此不可能直接模拟计算。我们注意到,走到第s格的概率是P[s],那么有公式:

P[s]=(1-p)*P[s-2]+p*P[s-1].

且P[0]=0,P[1]=1。那么使用这个公式可以计算出走到某格的概率。

因此,我们可以分段计算,计算到P[k-1],其中k为一个地雷。由于k是地雷,因此若要安全走到k+1格,那么p[k+1]=p[k-1]*(1-p)。p[k]=0, 算出p[k+1]后,仿照前面的算法,继续计算下一段路。

计算这个公式可以通过构造矩阵解决。

注意两种概率为0的特殊情况:第一个格子就是地雷,或两个连续的格子都有地雷。

code
posted on 2009-08-24 21:09 baby-fly 阅读(197) 评论(0)  编辑 收藏 引用 所属分类: Algorithm

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理