LightOj-1030-Discovering Gold


題目傳送門


題意:有一個六面體骰子,每投一次就往前走多少格,並可以獲得格子上的金幣,求走到最後可以獲得的金幣數的期望。

思路:當前點的期望P[i] = A[i]+(P[i-1]+P[i-2]+P[i-3]+P[i-4]+P[i-5]+P[i-6])/6,如果不夠六格, 則爲P[i] = A[i]+(P[i-1]+P[i-2]+P[i-3]+…+P[i-n])/n。

#include <bits/stdc++.h>

using namespace std;

int main(void)
{
    int T, cas=1;
    scanf("%d", &T);
    while (T--)
    {
        int n;
        scanf("%d", &n);
        double a[110];
        for (int i = 0; i < n; i++)
            scanf("%lf", &a[i]);
        double p[110];
        memset(p,0,sizeof(p));
        p[n-1] = a[n-1];
        for (int i = n-2; i >= 0; i--)
        {
            p[i] = a[i];
            int t = 6;
            if (n-i-1<6)
                t = n-i-1;
            for (int j = 1; j <= t; j++)
            {
                p[i] += 1.0*p[i+j]/t;
            }
        }
        printf("Case %d: %f\n", cas++, p[0]);
    }
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章