概率dp

    xiaoxiao2021-04-15  42

    通过考试(京东2017实习生真题) 概率dp,定义状态前i个题目对j个的概率,递推求解 #include<cstdio> #include <iomanip> #include<iostream> using namespace std; int n, m; int p[101]; double dp[101][101],tmp; int main() { freopen("in.txt", "r", stdin); freopen("out.txt", "w", stdout); cin >> n; m = (n * 3 + 4) / 5; for (int i = 1; i<=n; i++) { cin >> p[i]; } /*for (int i = 0; i <= n; i++) { dp[i][0] = 1; }*/ dp[0][0] = 1; for (int i = 1; i <= n; i++) { dp[i][0] = dp[i - 1][0] * (100.0 - p[i]) / 100; for (int j = 1; j <= i; j++) { dp[i][j] = dp[i - 1][j] * (100.0 - p[i]) / 100 + dp[i - 1][j - 1] * 1.0*p[i] / 100; } } tmp = 0; for (int i = m; i <= n; i++) { tmp += dp[n][i]; } cout.setf(ios::fixed); cout <<setprecision(5)<<tmp<< endl; fclose(stdin); fclose(stdout); }

    转载请注明原文地址: https://ju.6miu.com/read-671049.html

    最新回复(0)