飞行棋是在一个长度为n的棋盘上走动棋子的游戏。游戏开始时有一个棋子在棋盘的开始,位置是1。
然后每一步玩家掷一次骰子,并将棋子往前跳骰子正面大小个格子。
然后每一步玩家掷一次骰子,并将棋子往前跳骰子正面大小个格子。
当棋子跳出飞行棋的棋盘时游戏结束。问游戏结束时玩游戏的人掷骰子次数的期望。
标签:blog http io ar os sp for 数据 div
2
1
2
1.0000
1.1667
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
#include<algorithm>
#include<cstdlib>
#include<queue>
#include<vector>
#include<set>
#include<bitset>
using namespace std;
double dp[1010];
int main()
{
int t,n;
scanf("%d",&t);
while(t--){
scanf("%d",&n);
dp[1]=1;
dp[2]=1.0/6*dp[1]+1;
dp[3]=1.0/6*(dp[1]+dp[2])+1;
dp[4]=1.0/6*(dp[1]+dp[2]+dp[3])+1;
dp[5]=1.0/6*(dp[1]+dp[2]+dp[3]+dp[4])+1;
dp[6]=1.0/6*(dp[1]+dp[2]+dp[3]+dp[4]+dp[5])+1;
for(int i=7;i<=n;i++)
dp[i]=1.0/6*(dp[i-6]+dp[i-5]+dp[i-4]+dp[i-3]+dp[i-2]+dp[i-1])+1;
printf("%.4lf",dp[n]);
}
return 0;
}
标签:blog http io ar os sp for 数据 div
原文地址:http://www.cnblogs.com/a972290869/p/4101130.html