hdu 3853 概率dp求期望

来源:互联网 发布:概率矩阵分解 中心极限 编辑:程序博客网 时间:2024/06/10 16:12


给你一个地图   每个点只能往下  右  或不走三种方式,告诉你每个点的三种方式的概率  问到达终点的期望;

dp【i】【j】表示(i,j)到终点的期望;    dp【i】【j】=(dp【i+1】【j】*map【i】【j】【2】+dp【i】【j+1】*map【i】【j】【3】+2)/(1-map【i】【j】【1】)(有点条件概率的意思)  注意  这是在map【i】【j】【1】!=1的情况下才成立的;

#include<stdio.h>#include<string.h>#include<iostream>using namespace std;double map[1010][1010][4],dp[1010][1010];int main(){    int n,m,i,j;    while(~scanf("%d%d",&n,&m))    {        for(i=1;i<=n;i++)        for(j=1;j<=m;j++)        scanf("%lf%lf%lf",&map[i][j][1],&map[i][j][2],&map[i][j][3]);        memset(dp,0,sizeof(dp));        for(i=n;i>=1;i--)        {            for(j=m;j>=1;j--)            {                if(i==n&&j==m) continue;                 if(map[i][j][1]!=1)dp[i][j]=(map[i][j][2]*dp[i][j+1]+map[i][j][3]*dp[i+1][j]+2)/(1-map[i][j][1]);              }        }        printf("%.3lf\n",dp[1][1]);    }        return 0;}

0 0
原创粉丝点击