poj 2151 Check the difficulty of problems 概率DP

简单的概率DP!!!

结果=所以的情况-所以满足且<=n-1的情况!

代码如下:

 

 1 #include<iostream>
 2 #include<stdio.h>
 3 #include<algorithm>
 4 #include<iomanip>
 5 #include<cmath>
 6 #include<cstring>
 7 #include<vector>
 8 #define ll __int64
 9 #define pi acos(-1.0)
10 #define MAX 1001
11 using namespace std;
12 double p[MAX][32],dp[50][32],s[MAX][32],p1,p2;
13 int main(){
14     int n,m,t,i,j,k;
15     while(cin>>m>>t>>n){
16         if(m==0&&t==0&&n==0) break;
17         for(i=1;i<=t;i++)
18             for(j=1;j<=m;j++)
19                 cin>>p[i][j];
20         for(i=1;i<=t;i++){
21             dp[0][0]=1;
22             for(j=1;j<=m;j++) dp[j][0]=dp[j-1][0]*(1-p[i][j]);
23             for(j=1;j<=m;j++)
24                 for(k=1;k<=j;k++){
25                     dp[j][k]=dp[j-1][k-1]*p[i][j]+dp[j-1][k]*(1-p[i][j]);
26                 }
27             s[i][0]=dp[m][0];
28             for(j=1;j<=m;j++) s[i][j]=s[i][j-1]+dp[m][j];
29         }
30         p1=p2=1;
31         for(i=1;i<=t;i++){
32             p1*=(1-s[i][0]);
33             p2*=(s[i][n-1]-s[i][0]);
34         }
35         printf("%.3lf\n",p1-p2);
36     }
37     return 0;
38 }
View Code

 

 

 

posted @ 2013-08-10 11:41  _随心所欲_  阅读(149)  评论(0编辑  收藏  举报