您的位置:首页 > 编程语言 > Go语言

LightOJ 1030 Discovering Gold 概率

2015-09-22 20:00 459 查看
一道比较简单的概率dp, dp[i]表示取第i个坑里的金子,总共可以得到的金子的期望值, dp[i] = weight[i] + (dp[i + 1] + dp[i + 2] + dp[i + 3] + dp[i + 4] + dp[i + 5] + dp[i + 6]) / 6,注意当最后不足六个的时候要特殊处理。最后dp[1] 就是最终结果。

#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>

using namespace std;

int main() {
int t;
scanf("%d", &t);

int a[110];

double dp[110];

int CASE = 1;

while (t--) {
int n;

scanf("%d", &n);
for (int i = 1; i <= n; i++) {
scanf("%d", a + i);
}
dp
= a
;

for (int i = n - 1; i > 0; i--) {
double div = min(6, n - i);
double sum = 0;
for (int j = 1; j <= div; j++) {
sum += dp[i + j];
}
dp[i] = sum / div + a[i];
sum += dp[i];
}
printf("Case %d: %lf\n", CASE++, dp[1]);

}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  lightoj 数学 概率