您的位置:首页 > 其它

HDU 4405 概率期望DP

2014-11-18 14:37 232 查看
有 0到 n 个格子,掷骰子走路,求出到终点的数学期望,有飞行的路线。

dp[i] 存储在i位置走到终点的期望,

转移方程dp[i]=(dp[i+1] ----> dp[i+6])/6+1;

有飞行路线则直接赋值

#include "stdio.h"
#include "string.h"

double dp[100010];
int hash[100010];
int main()
{
int n,m,x,y,i,j;

while (scanf("%d%d",&n,&m)!=EOF)
{
if (n+m==0) break;
memset(hash,-1,sizeof(hash));
while (m--)
{
scanf("%d%d",&x,&y);
hash[x]=y;
}
memset(dp,0,sizeof(dp));

for (i=n-1;i>=0;i--)
{
if (hash[i]!=-1) dp[i]=dp[hash[i]];
else
{
for (j=1;j<=6;j++)
dp[i]+=dp[i+j];
dp[i]=dp[i]/6+1;
}
}
printf("%.4lf\n",dp[0]);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: