#include <iostream>
#include <algorithm>
#include <string.h>
using namespace std;
double dp[1010][50][50];
double a[1010][50];
double s[1010][50];
int main(){
int n,m,t;//n人数m题目数t至少得题数
while(scanf("%d %d %d",&m,&n,&t)!=EOF){
if(m==0 && t==0 && n==0)
return 0;
memset(dp,0,sizeof(dp));
memset(s,0,sizeof(s));
memset(a,0,sizeof(a));
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++)
scanf("%lf",&a[i][j]);
}
for(int i=1;i<=n;i++){
dp[i][0][0]=1.0;
for(int j=1;j<=m;j++){
dp[i][j][0]=dp[i][j-1][0]*(1-a[i][j]);
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
for(int k=1;k<=j;k++)
dp[i][j][k]=dp[i][j-1][k]*(1-a[i][j])+dp[i][j-1][k-1]*a[i][j];
}
}
for(int i=1;i<=n;i++){
for(int j=0;j<=m;j++){
if(j!=0)
s[i][j]=s[i][j-1]+dp[i][m][j];
else
s[i][j]=dp[i][m][0];
}
}
double p1=1.0,p2=1.0;
if(t==1)
p2=0;
for(int i=1;i<=n;i++){
p1*=(1-s[i][0]);
p2*=(s[i][t-1]-s[i][0]);
}
printf("%.3lf\n",p1-p2);
}
}
Check the difficulty of problems
猜你喜欢
转载自blog.csdn.net/doublekillyeye/article/details/81006382
今日推荐
周排行