做法:基本题了,被魔法消耗坑了,每次两点...
#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\n",dp[0][0]); } return 0; }