lightoj 1030 - Discovering Gold[期望]
题目大意:
起始位置是1,从1走到n,给你一个骰子(6个面),按点数走,收集每一点上的金子,如果你将要走到的位置在n之内,就继续扔,往前走,如果在n之外,就一直扔到合适的位置为止,求到达n点时的期望
分析: 这个题是一个求期望的题,那么值得注意的是,当扔在n之外的情况是无效的,所以我们在位置
#include <bits/stdc++.h>
using namespace std;
int const maxn = 105;
double dp[maxn];
int main()
{
int T;
scanf("%d", &T);
for(int ca = 1; ca <= T; ca++)
{
memset(dp,0,sizeof(dp));
int n;
scanf("%d", &n);
for(int i = 1; i <= n; i++)
scanf("%lf", &dp[i]);
for(int i = n - 1; i >= 1; i--)
for(int j = 1; j <= 6; j++)
dp[i] += dp[i + j] / (1.0 * min(6, n - i));
printf("Case %d: %.8f\n", ca, dp[1]);
}
return 0;
}