题目大意:长度为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;
}