lightoj1030期望dp

题目大意:长度为N的洞穴,每一格有一定数量的金矿,每投一次骰子,前进x格,若大于N则重新再投一次,到第N格时停止,求金矿的期望。

 思路分析:求期望。。。从后往前递推期望即可。

代码:         

#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
int A[1000];
double dp[1000];
int main(){
    int j,t,i,n,k=0;
    cin>>t;
    while(t--){
        k++;
        memset(dp,0,sizeof(dp));
        cin>>n;
        for(i=1;i<=n;i++) cin>>A[i];
        dp[n]=A[n];
        for(i=n-1;i>=1;i--){
            int a;
            dp[i]+=A[i];
            if(i+6<=n) a=6;
            else a=n-i;
            for(j=a;j>=1;j--) dp[i]+=dp[i+j]/a;
        }
        printf("Case %d: %.6f\n",k,dp[1]);
    }
    return 0;
}



猜你喜欢

转载自blog.csdn.net/guogai13/article/details/80458453