概率dp——处理分母为0的情况hdu3853

 很水的题,但要注意的是必须处理分母为0的情况

#include<bits/stdc++.h>
using namespace std;

const double esp = 1e-5;
const int maxn = 1050;

double p[maxn][maxn][4],e[maxn][maxn];
int r,c;

int main(){
    while(scanf("%d%d",&r,&c)!=EOF){
        memset(e,0,sizeof e);
        for(int i=1;i<=r;i++)
            for(int j=1;j<=c;j++)
                scanf("%lf%lf%lf",&p[i][j][1],&p[i][j][2],&p[i][j][3]);
        
    
        e[r][c]=0;
        for(int i=r;i>=1;i--)
            for(int j=c;j>=1;j--){
                if(i==r && j==c || p[i][j][1]==1)continue;
                double p21=p[i][j][2]/(1-p[i][j][1]);
                double p31=p[i][j][3]/(1-p[i][j][1]);
                e[i][j]=p21*e[i][j+1]+p31*e[i+1][j]+2/(1-p[i][j][1]);
            }
        printf("%.3lf\n",e[1][1]);
        
    }
}
 

 

posted on 2019-06-17 17:17  zsben  阅读(247)  评论(0编辑  收藏  举报

导航