Broken robot CodeForces - 24D && 概率dp

这篇博客介绍了如何解决一个关于机器人在n*m矩阵中移动的问题,目标是计算到达最后一行的期望步数。通过概率动态规划方法,博主解析了递推公式,并给出了特殊边界条件的处理方式,最后分享了实现代码。
摘要由CSDN通过智能技术生成

题目大意

n*m的矩阵,一开始机器人位于(x,y)位置,可以在原地不动,或者向左走,或者向右走,或者向下走。走到左(右)边界就不可以再向左(右)走。问走到第n行的期望步数是多少。(原地不动也算是一步)

input

10 14
5 14

output

18.0038068653

idea

首先要懂一个知识点。对于一个不在边界的点(x, y),如果可以从它的四个方向过来,那么它的步数期望 E(x, y) = 1/4 * E(x + 1, y) + 1/4 * E(x, y + 1) + 1/4 * E(x, y - 1) + 1/4 * E(x - 1,y) + 1 , 为什么呢? E(x, y) = 1/4 * (E(x + 1, y) + 1) + 1/4 * (E(x, y + 1) + 1)+ 1/4 * (E(x, y - 1) + 1) + 1/4 * (E(x - 1,y) + 1) 看到这个式子就恍然大悟了。

这个时候我们就可以写出:
如果只有一列 dp[i][1] = 1/2 * dp[i + 1][1] + 1/2 * dp[i][1] +1;
多于一列:
在左边界的时候 :

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值