http://poj.org/problem?id=1217

题意:两个人在玩抛硬币的游戏,没回合抛两次,两次的结果不同,双方得到的分也是不同的,要求输出前20轮中,没回合A胜,B胜或是平局的概率。

算法:概率DP

分析:用dp[i][j][k] 来表示第i轮,A得的总分数为j,B得的分数是k的概率 ,用向后递推的思想就可以求解本题了。

代码:

/*
POJ 1217 FOUR QUARTERS
Tips : DP
runtime 0ms
Memory 1080K
*/
#include<stdio.h>
#include<string.h>
const double P1 = 1.0 / 2.0 ;
const double P2 = 1.0 / 4.0 ;
int add_a[15] = {0,1,1,2,0,0,1,-1,0,0} ;
int add_b[15] = {0,0,-1,-1,1,0,0,2,0,-1} ;
double p[15] = {1,P2*P2,P1*P2,P2*P2,P1*P2,P1*P1,P1*P2,P2*P2,P2*P1,P2*P2} ;
double dp[21][65][65] ;
void DP(){memset(dp,0,sizeof(dp));dp[0][20][20] = 1 ;for(int i=1;i<=20;i++){for(int j=0;j<=60;j++){int score1 = j-20 ;for(int k=0;k<=60;k++){int score2 = k - 20 ;for(int st=1;st<=9;st++){int n_s1 = score1 + add_a[st] ;int n_s2 = score2 + add_b[st] ;dp[i][n_s1+20][n_s2+20] += dp[i-1][j][k] * p[st] ;}}}}printf("Round   A wins    B wins    Tie\n");for(int i=1;i<=20;i++){double a_win = 0 , b_win = 0 , tie = 0 ;for(int j=0;j<=60;j++){for(int k=0;k<=60;k++){if(j>k) a_win+=dp[i][j][k] ;else if(j<k)    b_win += dp[i][j][k] ;else tie += dp[i][j][k] ;}}printf("%5d%10.4f%%%9.4f%%%9.4f%%\n",i,a_win*100,b_win*100,tie*100);}
}
int main(){freopen("1out","w",stdout);DP() ;return 0;
}

POJ FOUR QUARTERS相关推荐

  1. POJ 1217 FOUR QUARTERS 笔记

    抛掷硬币,玩家A.B每轮分别抛两次硬币,每轮得分如图.求前20轮A赢,B赢,打平的概率.

  2. POJ 1217 FOUR QUARTERS

    题目意思是,AB两个人掷硬币,每次一个人掷两次,然后对应图标里面得分,要你输出前20回合 A赢,B赢,或是平均的概率 dp还是不怎么会,参考别人代码才敲出来的 1 #include<iostre ...

  3. (多重背包+记录路径)Charlie's Change (poj 1787)

    http://poj.org/problem?id=1787   描述 Charlie is a driver of Advanced Cargo Movement, Ltd. Charlie dri ...

  4. POJ前面的题目算法思路【转】

    1000 A+B Problem 送分题 49% 2005-5-7 1001 Exponentiation 高精度 85% 2005-5-7 1002 487-3279 n/a 90% 2005-5- ...

  5. poj题目详细分类及算法推荐题目

    DP:  1011   NTA                 简单题  1013   Great Equipment     简单题  1024   Calendar Game       简单题  ...

  6. ACM POJ 题目分类(完整整理版本)

    DP: 1011   NTA                 简单题  1013   Great Equipment     简单题  1024   Calendar Game       简单题   ...

  7. POJ ZOJ题目分类

    POJ,ZOJ题目分类(多篇整合版,分类很细致,全面) 标签: 题目分类POJ整理 2015-04-18 14:44 1672人阅读 评论(0) 收藏 举报 本文章已收录于: 分类: ACM资料(5) ...

  8. POJ,ZOJ题目分类(多篇整合版,分类很细致,全面)

    水题: 3299,2159,2739,1083,2262,1503,3006,2255,3094 初级: 一.基本算法:        (1)枚举 (1753,2965)       (2)贪心(13 ...

  9. Poj·Picnic Planning

    初见安~这里是传送门:Poj P1639 Description The Contortion Brothers are a famous set of circus clowns, known wo ...

最新文章

  1. ORB-SLAM(四)追踪
  2. golang修改文件的最后访问时间,最后修改时间
  3. 为什么计算机有信息记忆功能,为什么计算机有记忆能力
  4. JAVA--自制斐波那契数列输出
  5. MySQL高可用--MGR入门(3)单主/多主模式切换
  6. 2021年中国超轻型直升机市场趋势报告、技术动态创新及2027年市场预测
  7. pcie握手机制_图解PCIE原理(从软件角度)
  8. java中quickstart_Beam编程系列之Java SDK Quickstart(官网的推荐步骤)
  9. [ZT]硬盘整数分区计算方法
  10. 有什么好玩的网页小游戏网站推荐么?
  11. html输入框位置控制,JS 控制input 输入框光标位置
  12. 使用 SHAP库 对模型预测作解释
  13. mysql spj_MySQL查询优化器--非SPJ优化--ORDERBY优化
  14. Win7系统安装软件提示不是有效的win32应用程序的解决方法
  15. python中对数字降序和升序_该程序查找在Python中按升序或降序排列数字的最低成本...
  16. 老梁情商课-拒绝是战术不是艺术
  17. 如何把PDF转成PPT文件?这几招简单方便
  18. 如何快速查询极兔快递并设置参数?
  19. GHz指计算机的,ghz指的是计算机的
  20. IdentityServer4总结

热门文章

  1. 诺贝尔奖得主希勒:应对AI威胁要为民众提供生活保险 | 观点
  2. Kotlin从零到精通Android开发
  3. 记录--手把手带你开发一个uni-app日历插件(并发布)
  4. 网易游戏面试经验(三)
  5. 计算机专业英语学期总结
  6. 有限元方法基础入门教程(一维弹性问题的有限元程序)
  7. 对日开发常用日语单词
  8. 语义分割的奇技淫巧 - 知乎回答[转]
  9. 楼主已经复活,博客恢复更新
  10. Memblaze 联手PMC推出用于超大规模数据中心的高性能PCIe SSD