HDU3853 LOOPS 期望DP 简单

http://acm.hdu.edu.cn/showproblem.php?pid=3853

有一点坑的地方是如果一个地方停在原地的概率为1,那么该地的期望为0,就相当于这个地方也是一个出口。。。
 
代码很短
 1 #include<cstdio>
 2 #include<cstring>
 3 #include<iostream>
 4 #include<algorithm>
 5 #include<cmath>
 6 #include<queue>
 7 using namespace std;
 8 const int maxn=1010;
 9 const double eps=1e-8;
10 const int modn=998244353;
11 int r,c;
12 double a[maxn][maxn][4]={};
13 double f[maxn][maxn]={};
14 int main(){
15     while(~scanf("%d%d",&r,&c)){
16         memset(f,0,sizeof(f));
17         memset(a,0,sizeof(a));
18         for(int i=1;i<=r;i++){
19             for(int j=1;j<=c;j++){
20                 for(int k=1;k<=3;k++){
21                     scanf("%lf",&a[i][j][k]);
22                 }
23             }
24         }
25         for(int i=r;i>=1;i--){
26             for(int j=c;j>=1;j--){
27                 if(i==r&&j==c){continue;}
28                 if(fabs(1-a[i][j][1])<=1e-5){f[i][j]=0;continue;}
29                 f[i][j]=(f[i][j+1]*a[i][j][2]+f[i+1][j]*a[i][j][3]+2)/(1.0-a[i][j][1]);
30             }
31         }
32         printf("%.3f
",f[1][1]);
33     }
34     return 0;
35 }
View Code
原文地址:https://www.cnblogs.com/137shoebills/p/7786518.html