概率dp

来源:互联网 发布:c罗职业生涯数据 编辑:程序博客网 时间:2024/06/04 18:21

通过考试(京东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);}



0 0
原创粉丝点击