poj 2151 概率DP

来源:互联网 发布:一个淘宝店铺卖多少钱 编辑:程序博客网 时间:2024/04/28 18:03
#include<cstdio>#include<cstring>double dp[1010][36][36];double p[1010][36];int main(){int m,t,k;while(~scanf("%d%d%d",&m,&t,&k)&&(m+t+k)){double p1=1,p2=1;memset(dp,0,sizeof(dp));for(int i=1;i<=t;i++)for(int j=1;j<=m;j++)scanf("%lf",&p[i][j]);for(int i=1;i<=t;i++){double tem=1;for(int j=1;j<=m;j++)tem*=(1-p[i][j]);p1*=(1-tem);}for(int i=1;i<=t;i++){dp[i][0][0]=1;for(int j=1;j<=m;j++){   for(int k=1;k<=j;k++)   dp[i][j][k]=dp[i][j-1][k]*(1-p[i][j])+dp[i][j-1][k-1]*p[i][j];   dp[i][j][0]=dp[i][j-1][0]*(1-p[i][j]);    }}for(int i=1;i<=t;i++){double tem=0;for(int j=1;j<=k-1;j++)tem+=dp[i][m][j];p2*=tem;}printf("%.3f\n",p1-p2);}}

原创粉丝点击