递推,倒着递推。
#include<stdio.h> #define maxn 1010 #define min(a,b) (a)>(b)?(b):(a) int main() { int T,n,cas=1; int a[maxn]; double f[maxn]; scanf("%d",&T); while(T--) { scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]); f[n]=a[n]; for(int i=n-1;i;i--) { int d=min(6,n-i); f[i]=a[i]; for(int j=1;j<=d;j++) f[i]+=f[i+j]/d; } printf("Case %d: %.10lf ",cas++,f[1]); } return 0; }