LOOPS 概率dp

题意:迷宫是一个R*C的布局,每个格子中给出停留在原地,往右走一个,往下走一格的概率,起点在(1,1),终点在(R,C),每走一格消耗两点能量,求出最后所需要的能量期望

简单概率dp

注意   原地不动为1的概率!

#include<bits/stdc++.h>
using namespace std;
#define N 1005
double p[N][N][3];
double dp[N][N];
int main()
{
    int n,m;
    while(scanf("%d%d",&n,&m)==2)
    {
        for(int i=1;i<=n;i++)
            for(int j=1;j<=m;j++)
               for(int k=0;k<3;k++)
                 scanf("%lf",&p[i][j][k]);
        memset(dp,0,sizeof dp);

        for(int i=n;i>=1;i--)
            for(int j=m;j>=1;j--)
        {
            if(i==n&&j==m)continue;
            if( fabs(p[i][j][0]-1) <1e-7)continue;

            dp[i][j]=(p[i][j][1]*dp[i][j+1]+p[i][j][2]*dp[i+1][j]+2)/(1-p[i][j][0]);
        }
      printf("%.3lf
",dp[1][1]);
    }
}
原文地址:https://www.cnblogs.com/bxd123/p/10484455.html