#include <cstdio>
#include<iostream>
#include<cmath>
#include<cstring>
#include<string>
#include<algorithm>
#include<map>
using namespace std;
const int MAXN = 1002;
int r,c;
double a[MAXN][MAXN][3];
double dp[MAXN][MAXN];
int main()
{
while(cin>>r>>c)
{
for(int i=1;i<=r;i++)
for(int j=1;j<=c;j++) scanf("%lf%lf%lf",&a[i][j][0],&a[i][j][1],&a[i][j][2]);
dp[r][c]=0;
for(int i=r;i>=1;i--)
for(int j=c;j>=1;j--)
{
if(i==r && j==c) continue;
if(a[i][j][0]==1) { dp[i][j]=0; continue; }//题目出错了?
dp[i][j]=(a[i][j][1]*dp[i][j+1]+a[i][j][2]*dp[i+1][j]+2)/(1-a[i][j][0]);
}
printf("%.3lf\n",dp[1][1]);
}
return 0;
}
[概率dp] hdu loops
最新推荐文章于 2019-10-15 17:16:31 发布