hdu 3853 LOOPS 확률 dp

1205 단어
방법: 기본 문제입니다. 마법에 소모되어 두 시마다...
#include<cstdio>
#include<cstring>
#include<cmath>
#define eps 1e8
const int LMT=1002;
double dp[LMT][LMT],p[3][LMT][LMT],ep[LMT][LMT];
void init(void)
{
    memset(dp,0,sizeof(dp));
}
int main(void)
{
    int r,c,i,j;
    while(~scanf("%d%d",&r,&c))
    {
        init();
        for(i=0;i<r;i++)
            for(j=0;j<c;j++)
                scanf("%lf%lf%lf",&p[0][i][j],&p[1][i][j],&p[2][i][j]);
            for(i=r-1;i>=0;i--)
                for(j=c-1;j>=0;j--)
                    {
                    if(i==r-1&&j==c-1)continue;
                    if(p[0][i][j]==1)continue;
                    dp[i][j]+=2/(1-p[0][i][j]);
                        if(i<r-1)dp[i][j]+=p[2][i][j]*dp[i+1][j]/(1-p[0][i][j]);
                        if(j<c-1)dp[i][j]+=p[1][i][j]*dp[i][j+1]/(1-p[0][i][j]);
                    }
                    printf("%.3lf
",dp[0][0]); } return 0; }

좋은 웹페이지 즐겨찾기