题目大意
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;
多于一列:
在左边界的时候 :