1、通过考试问题
解法:
import java.util.*;
public class Main {
public static void main(String[] args){
Scanner in = new Scanner(System.in);
while(in.hasNextInt()){
int n = in.nextInt();
double[] p = new double[n];
for(int i=0; i<n; i++){
p[i] = (double)in.nextInt()/100;
}
double res = MyFunction(n, p);
System.out.println(String.format("%.5f", res));
}
}
public static double MyFunction(int n, double[] p){
double[][] dp = new double[n+1][n+1];
//初始化1
dp[0][0] = 1;
//初始化2
for(int j=1; j<=n; j++){
dp[0][j] = 0;
}
for(int i=1; i<=n; i++){
//初始化3
dp[i][0] = dp[i-1][0]*(1-p[i-1]);
for(int j=1; j<=n; j++){
//注意此题该处为 p[i-1]
dp[i][j] = dp[i-1][j-1]*p[i-1] + dp[i-1][j]*(1-p[i-1]);
}
}
//int passNum = (3*n+4)/5;
int passNum = (int)Math.ceil(n*0.6);
double sum = 0;
for(int k=passNum; k<=n; k++){
sum += dp[n][k];
}
return sum;
}
}