DP [i]は金を得ることを期待、i点から最後まで、表しています。
DP [I] = valの[I] +Σdp[J] / CNT(jはiが到達することができ、ステップの位置であり、CNTは、ステップに到達可能な位置の数です)
1の#include <cstdioを> 2の#include <アルゴリズム> 3 使用して 名前空間STDを、 4 INT T、CAS、N。 5 INTヴァル[ 105 ]。 6 二重 DP [ 105 ]。 7 INT メイン() 8 { 9 用(scanf関数(" %のD "、&T);!T = 0 ; T-- ) 10 { 11 CAS ++ 。 12 のscanf(" %d個"、&N) 13 以下のために(int型 i = 1 ; iが<= N; iが++ ) 14 のscanf(" %dを"&ヴァル[I])。 15 DP [N] = valの[N]。 16 のためには、(int型 I = N - 1 ; I> = 1 ; i-- ) 17 { 18 二重和= 0 。 19 int型 CNT = 0 。 20 のための(int型 J = I + 1、J <=分(N、I + 6); J ++ ) 21 { 22 和+ = DP [J]。 23 CNT ++ ; 24 } 25 DP [I] = valの[I] +和/ CNT。 26 } 27 のprintf(" ケース%のD:%.6lf \ n "、CAS、DP [ 1 ])。 28 } 29 }