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. 数据中心布线系统构成及不同规模范例
  2. SAP系统和微信集成的系列教程之三:微信用户关注公众号之后,自动在SAP C4C系统创建客户主数据
  3. 2018/7/18-纪中某C组题【jzoj3508,jzoj3509,jzoj3510,jzoj3512】
  4. html 实时预览在线,用HTML+CSS做一个实时预览的markdown编辑器
  5. H5新标签--语义化标签
  6. oracle成本模块培训,Oracle App 培训笔记(5) -- 成本管理模块表结构整理 续
  7. php执行查询的代码,PHP实现动态执行代码的方法
  8. 阿里云服务器Discuz论坛程序安装
  9. CS231n——机器学习算法——线性分类(上: 线性分类器)
  10. FMVP詹姆斯,王者归来!英雄实至名归!
  11. Swift复数计算器
  12. 山石岩读丨一文读懂区块链安全:区块链会带来哪些冲击?
  13. PDF文件进行在线分割如何去操作
  14. 可以储存照片的字段类型是_在数据库中可用来存储图片的字段对象是哪种类型的字段?...
  15. STM32 ADC最大采样频率
  16. 设计师必须知道的 5个设计灵感网站
  17. mysql month函数值类型_MySQL常用函数(分类别整理)
  18. Zabbix #Zabbix 构建企业级监控告警平台 1
  19. 临汾空气质量排名垫底是因不努力?生态环境部回应
  20. GitHub+hexo搭建个人博客(2019新版超详细教程)

热门文章

  1. 编程入门:什么是前端和后端?区别有3点
  2. 低调的移动互联网出海之王——「茄子快传」成长简史
  3. openpyxl修改图表中纯色填充的透明度和颜色
  4. 三国杀体验服服务器维护中,三国杀体验服网址
  5. Linux打开和关闭防火墙指令
  6. 第七期,MySQL如何创建分组查询!!!!
  7. TortoiseSVN环境搭建
  8. 计算机操作系统学习笔记——文件管理之文件系统基础
  9. 【R语言】实验三 数据可视化
  10. String a = “abc“ 和 new String(“abc“)的区别