1493 QQpet 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1493

题目意思:
掷骰子 最多10次,给出每次掷到1-6点的概率 p1~p6,求中途会途径指定点「5, 12, 22, 29, 33, 38, 42, 46, 50 and 55」的概率

解题思路:
定义一个二维数组 dp[61][11],dp[ i ][ j ] 表示掷骰子j次后,落在第i格的概率。
设掷骰子掷到 x (x在1~6之间)的概率=Px。

则 dp[ i ][ j ] =
dp[ i-1 ][ j-1] * P1 + dp[ i-2 ][ j-1] * P2 + dp[ i-3 ][ j-1] * P3 + dp[ i-4 ][ j-1] * P 4+ dp[ i-5 ][ j-1] * P5 + dp[ i-6 ][ j-1] * P6
即第 j 次骰子落到 i 的概率由上一次(第 j-1 次)落的情况推导;i <= 6时特殊考虑下;

从掷0次骰子开始推导,0次 100%在0起点,然后推出掷1次的情况,不断+1到掷10次;
最后掷骰子过程中指到达过指定位置 j 的概率等于二维数组第j行 sum之和。

#include <stdio.h>
#include <string.h>
/*** 考点:动态规划*/double dp[61][11]; //dp[i][j] 代表掷骰子j次后,落在第i格的概率
//需要理解dp二维数组的含义
double p[7]; // p[i]代表骰子掷到i的概率int main() {int targets[] = {5, 12, 22, 29, 33, 38, 42, 46, 50, 55};int steps = 10;int num;scanf("%d", &num);while (num-- > 0) {memset(dp,0,sizeof(dp));memset(p,0,sizeof(p));scanf("%lf %lf %lf %lf %lf %lf", &p[1], &p[2], &p[3], &p[4], &p[5],&p[6]);for (int i = 0; i <= steps; i++) {for (int k = 0; k < 61; k++) {if (i == 0) {  //第0步 骰子起点 骰子100%在位置0dp[k][i] = k == 0 ? 1.0 : 0;} else {  //第i步到k的概率, 从第i-1步结果得到(动态规划)int start = k - 6 > 0 ? k - 6 : 0, end = k - 1;//如果k>6, 第i步到k,可以看成由上一步(i-1步)在 k-x,然后掷一次x到k;x从1到6//如果k<=6 29行特殊判断了double rate = 0.0;for (int pos = start; pos <= end; pos++) {rate += p[k - pos] * dp[pos][i - 1];}dp[k][i] = rate;}}}for (int i = 0; i < sizeof(targets) / sizeof(int); i++) {double totalRate = 0.0;for (int k = 1; k < 11; k++) {//最后掷骰子过程中指到达过指定位置 targets[i] 的概率等于二维数组第targets[i]行 sum之和。totalRate += dp[targets[i]][k];}printf("%d: %.1f%%\n", targets[i], 100 * totalRate);}if (num > 0) {printf("\n");}}
}

动态规划 HDU 1493 QQpet相关推荐

  1. HDU 1493 QQpet exploratory park(概率DP)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1493 题意:一排有61个格子标号0-60.其中停在5,12, 22, 29, 33, 38, 42, ...

  2. !HDU 1493 QQpet exploratory park-dp

    题意:有61个编号从0到60的站点,其中有几个里面有宝藏,通过掷筛子的方式决定每次前进几步,只能掷10次筛子,求能走到各个有宝藏的站点的概率 分析: 刚开始又习惯性的想着以每个站点为状态,写了代码出来 ...

  3. hdu 1493 qq宠物

    hdu 1493 QQpet exploratory park 概率dp 题目网址: http://icpc.njust.edu.cn/Problem/Hdu/1493/ 本来以为很简单,结果硬是坑了 ...

  4. HDU 1493(QQpet exploratory park)

    动态规划题,设 dp[i][j] 表示掷 j 次色子后到达第 i 格的概率. 状态转移方程为 dp[i + k][j + 1] += dp[i][j] * p[k],k 为 1~6,p[k] 为掷出 ...

  5. 【HDOJ】1493 QQpet exploratory park

    超水的动态规划.最后要对概率求Sigma. 1 #include <cstdio> 2 #include <cstring> 3 #include <cstdlib> ...

  6. [ACM_动态规划] hdu 1176 免费馅饼 [变形数塔问题]

    Problem Description 都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼.说来gameboy的人品实在是太好了,这馅饼别处都不掉,就掉落在他身旁 ...

  7. hdu 1496 QQpet exploratory park 水概率dp

    题目 犯了个语言的错误: C语言中"%%"会输出一个"%" ,我在本地用1个"%"还是输出了"%". 代码: #incl ...

  8. 杭电OJ分类题目(3)

    原题出处:HDOJ Problem Index by Type,http://acm.hdu.edu.cn/typeclass.php 杭电OJ分类题目(3) HDU Computational Ge ...

  9. AK F.*ing leetcode 流浪计划之回文串

    欢迎关注更多精彩 关注我,学习常用算法与数据结构,一题多解,降维打击. 文章目录 一.简介 二.解题步骤 三.作用 四.经典算法介绍 判断一个串是否为回文串(单次查询) 普通情况 判断指定字符 多次子 ...

最新文章

  1. Swift与LLVM-Clang原理与示例
  2. 读大叔深入理解javascript(2)
  3. 让Sandcastle为你的类库生成类似于MSDN的帮助文档
  4. NDK开发之日志打印
  5. 【项目实战】基于随机森林算法的房屋价格预测模型
  6. 【Linux】20.shell脚本 检测是否 ping 通
  7. 深入理解领域驱动设计中的聚合
  8. jmap java opts_jmap --查看JVM内存使用详情
  9. Reddit 评级算法的工作原理
  10. noip模拟赛 对刚
  11. avaya CM查看VDN指向的技能组
  12. Mybatis实现订单案例的五表联合操作
  13. 上海行:陈正翔与 Mind+,最简易图形化编程工具
  14. 2.2 DP: Value Iteration Gambler‘s Problem
  15. 从EXCEL的超链接中批量提取图片
  16. 根据网络图片地址获取资源的字节流
  17. 2021-12-18 迈向程序猿的第四十七步
  18. 字节主管工程师年薪中位数 56.4 万美元,排世界第 7,2022 全球程序员收入报告出炉!...
  19. 高效下载论文----谷歌SCI-HUB插件
  20. 百度竞价账户层级及基本设置

热门文章

  1. 关于电脑右键缺少office三件套的解决方案
  2. 自学编程推荐的11个学习及刷题网站
  3. Android利用Cookie实现码源登录效果二
  4. 帝国搜索模板不支持php,解决帝国CMS搜索模板不支持灵动标签的方法
  5. 如果存在表则删除表然后创建Mysql
  6. maven快速入门第十七讲——从私服下载jar包到本地仓库
  7. AstrOrz Player 0.72v 国庆最新版本(2012/09/22)更新无期限版本获取方式!(2013/02/14)
  8. 积分运营系列—一款优秀积分商城产品需具备的准则与功能梳理
  9. 新版qq新增的功能(屏幕录制 屏幕翻译 屏幕文字识别 屏幕截图)
  10. AppleXml.Framework(02)-通过框架搭建Demo环境