设dp[i][j]为有白老鼠i只,黑老鼠j只时轮到公主取时,公主赢的概率。

那么当i = 0 时,为0

当j = 0时,为1

公主可直接取出白老鼠一只赢的概率为i/(i+j)

公主取出了黑老鼠,龙必然也要取出黑老鼠公主才能赢,跑出来的老鼠有两种可能

跑出来的是黑老鼠,公主赢的概率为dp[i][j] += j/(i+j)*(j-1)/(i+j-1)*(j-2)/(i+j-2)*dp[i][j-3].(j>=3)

跑出来的是白老鼠,公主赢的概率为dp[i][j] += j/(i+j)*(j-1)/(i+j-1)*i/(i+j-2)*dp[i-1][j-2].(j>=2)

贴代码:

 #include <cstdio>
#define N 1005
double dp[N][N];
int main()
{
// freopen("in.c","r",stdin);
int w,b;
scanf("%d%d",&w,&b);
for(int i=; i<=w; ++i) dp[i][] =;
for(int i=; i<=b; ++i) dp[][i] =;
for(int i=; i<=w; ++i)
{
for(int j=; j<=b; ++j)
{
dp[i][j] = (double)i/(i+j);
if(j >= ) dp[i][j] += (double)j/(i+j)*(double)(j-)/(i+j-)*(double)(j-)/(i+j-)*dp[i][j-];
if(j >= ) dp[i][j] += (double)j/(i+j)*(double)(j-)/(i+j-)*(double)i/(i+j-)*dp[i-][j-];
}
}
printf("%.9lf\n",dp[w][b]);
return ;
}

最新文章

  1. PHP网页
  2. Hadoop:Windows 7 32 Bit 编译与运行
  3. SQLServer调试
  4. 【memcache缓存专题(1)】memcache的介绍与应用场景
  5. Trail: JDBC(TM) Database Access(2)
  6. php mysql PDO使用
  7. [置顶] 正则表达式应用:匹配IP地址
  8. YARN简短的建筑
  9. jQuery的each函数
  10. YML(1)什么是 YML
  11. KnockOut绑定之Click绑定
  12. wget Mac OS 下安装
  13. C++Primer第五版学习笔记
  14. axure8.0激活
  15. eclipse使用报错集锦
  16. html问题汇总
  17. Docker基础-Docker数据管理
  18. php 会话控制(理解会话控制的概念)
  19. 学习Python中的集合
  20. Review——JS的异步与同步

热门文章

  1. Linux下搜索文件
  2. CAS操作原理分析
  3. android--------Dagger2介绍与简单使用(一)
  4. week 1
  5. UVA-1632 Alibaba (区间DP+滚动数组)
  6. Oracle11g温习-第三章:instance实例管理
  7. 3n+1问题中的几个小的注意点
  8. 使用UTL_SMTP发送中文邮件及使用UTL_TCP从附件服务器获取中文附件
  9. sublime 个人心得
  10. pyspark使用ipython