雕刻时光

just do it……nothing impossible
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

dp算期望(有聊变无聊人的期望)

Posted on 2011-03-15 22:36  huhuuu  阅读(238)  评论(0编辑  收藏  举报
从这里可以发现 只要知道递推方程,就可以把dp的过程用记忆化递归表示出来
其实记忆化bfs 记忆化递归 ……只要是计算某种状态后,将其保存下来的过程,都是dp!!!
View Code
#include<stdio.h>

double dp[200][200];

double di(int n,int m)
{
if(dp[n][m]!=-1)
return dp[n][m];
if(m==0)
return dp[n][m]=0;
if(m==1)
return dp[n][m]=(n+1)*1.0/2;
if(n==0)
return dp[n][m]=1.0*di(2,m-2)+1;
if(n==1)
return dp[n][m]=1.0*(m*di(2,m-1)+m*(m-1)/2*di(3,m-2))*1.0/((m+1)*m/2)+1;

return dp[n][m]=1.0*(di(n+1,m-1)*n*m+di(n+2,m-2)*m*(m-1)/2)*1.0/(n*m+m*(m-1)/2)+1+1.0*(n-1)*n/2/(n*m+(m*(m-1)/2));
}

int main()
{
int n,m;
while(scanf("%d%d",&n,&m),n||m)
{
double t;

int i,j;
for(i=0;i<=100;i++)
{
for(j=0;j<=100;j++)
{
dp[i][j]
=-1;
}
}

printf(
"%.2lf\n",di(n,m));
}
}