骰子点数概率__dp
骰子点数概率
时间限制:1 秒
内存限制:32 兆
- 题目描述:
-
把n个骰子扔在地上,所有骰子朝上一面的点数之和为S。输入n,打印出S的所有可能的值出现的概率。
- 输入:
-
输入包括一个整数N(1<=N<=1000),代表有N个骰子。
- 分析一个骰子的
1: 0.167
2: 0.167
3: 0.167
4: 0.167
5: 0.167
6: 0.167 如果有两个骰子,6*6->36个结果保存到 2~12的范围内
对于3骰子,则 6*(2~12)的结果,保存在3~18的范围,有重复计算,则dp,滚动数组优化空间
Ps:原题数据有误,题主已经说明,下面一题可以提交
#include<stdio.h>
double dp[][],dp0[];
int main(){
int i,n,j,k;
while(scanf("%d",&n)!=EOF){
int n6=n*;
for(i=;i<=;i++){
for(j=;j<=n6;j++){
dp[i][j]=;
}
}
i=;
for(j=;j<=;j++){
dp[i][j]=/6.0;
dp0[j]=/6.0;
}
for(i=;i<=n;i++){
int first=i-,end=(i-)*;
for(j=first;j<=end;j++){
for(k=;k<=;k++){
dp[i%][j+k]=;
}
}
for(j=first;j<=end;j++){
for(k=;k<=;k++){
dp[i%][j+k]+=dp[(i-)%][j]*dp0[k];
}
}
}
int first=n,end=n*;
for(i=first;i<=end;i++){
printf("%d: %.3lf\n",i,dp[n%][i]);
}
}
return ;
}
题目1360:乐透之猜数游戏
时间限制:2 秒
内存限制:32 兆
特殊判题:否
提交:357
解决:107
- 题目描述:
-
六一儿童节到了,YZ买了很多丰厚的礼品,准备奖励给JOBDU里辛劳的员工。为了增添一点趣味性,他还准备了一些不同类型的骰子,打算以掷骰子猜数字的方式发放奖品。例如,有的骰子有6个点数(点数分别为1~6),有的骰子有7个(点数分别为1~7),还有一些是8个点数(点数分别为1~8) 。他每次从中拿出n个同一类型的骰子(假设它们都是拥有m个点数并且出现概率相同)投掷,然后让员工在纸上按优先级(从高到低)的顺序写下3个数上交,表示他们认为这些骰子最有可能的点数之和是多少。第一个数就猜对的人,是一等奖;第二个数才猜对的人是二等奖;如果三个数都不是正确答案,别灰心!YZ还准备了很多棒棒糖。ZL很聪明,他想了想,打算把概率(以保留两位小数的概率计)最高的三个数找出来,如果有概率相同,则选择其中点数和最小的那个数。你觉得ZL会依次写下哪三个数?
- 输入:
-
输入有多组数据。
每组数据一行,包含2个整数n(0<=n<=10),m(6<=m<=8),n表示YZ拿出的骰子数,m表示骰子拥有的点数。如果n=0,则结束输入。
- 输出:
-
对应每组数据,输出ZL最可能依次写下的点数,以及其对应的概率值。概率值按4舍5入要求保留2位小数。每组数据之间空一行,注意:最后一组数据末尾无空行。
- 样例输入:
-
1 6
4 6
3 7
0
- 样例输出:
-
1 0.17
2 0.17
3 0.17 13 0.11
14 0.11
15 0.11 12 0.11
10 0.10
11 0.10
做法与上题类似+排序
#include<stdio.h>
#include<iostream>
#include<algorithm>
using namespace std; double dp[][]; struct data{
int no;
double v;
}s[]; int cmp(data x,data y){
if(x.v==y.v)return x.no<y.no;
else return x.v>y.v;
} int main(){
int i,n,j,k,m;
while(scanf("%d",&n)!=EOF&&n){
scanf("%d",&m);
int nm=n*m;
for(i=;i<=n;i++){
for(j=;j<=nm;j++){
dp[i][j]=;
}
} i=;
for(j=;j<=m;j++){
dp[i][j]=1.0/m;
}
for(i=;i<=n;i++){
int first=i-,end=(i-)*m;
for(j=first;j<=end;j++){
for(k=;k<=m;k++){
dp[i][j+k]+=dp[(i-)][j]*dp[][k];
}
}
} int first=n,end=n*m;
for(i=first;i<=end;i++){
s[i].no=i;
s[i].v=((int)((dp[n][i]+0.005)*));
}
sort(&s[first],&s[end+],cmp);
for(i=first;i<=first+;i++){
printf("%d %.2lf\n",s[i].no,s[i].v/100.0);
}printf("\n");
} return ;
}
骰子点数概率__dp的更多相关文章
- 九度OJ 1255:骰子点数概率 (递归、DP)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:316 解决:29 题目描述: 把n个骰子扔在地上,所有骰子朝上一面的点数之和为S.输入n,打印出S的所有可能的值出现的概率. 输入: 输入包 ...
- 剑指Offer43 n个骰子点数概率
/************************************************************************* > File Name: 43_Dics.c ...
- 使用excel计算骰子输赢概率
如何得到使用3个骰子掷赢4个骰子的概率(每个骰子的点数为1-6,点数一样算输) 分为3步解决: 第一步.计算n个骰子得到m点数的分布 1个骰子能得到1.2.3.4.5.6点数,每个点数出现的方式只有1 ...
- 笔试算法题(22):二分法求旋转数组最小值 & 骰子值概率
出题:将一个数组最开始的k个(K小于数组大小N)元素照搬到数组末尾,我们称之为数组的旋转:现在有一个已经排序的数组的一个旋转,要求输出旋转数组中的最小元素,且时间复杂度小于O(N): 分析: 时间复杂 ...
- [Python] Python 学习 - 可视化数据操作(一)
Python 学习 - 可视化数据操作(一) GitHub:https://github.com/liqingwen2015/my_data_view 目录 折线图 散点图 随机漫步 骰子点数概率 文 ...
- 【面试题043】n个骰子的点数
[面试题043]n个骰子的点数 题目: 把n个骰子扔在地上,所有骰子朝上一面的点数之和为s, 输入n,打印出s的所有可能的值出现的概率. n个骰子的总点数,最小为n,最大为6n,根据排列组 ...
- n个骰子的点数
把n个骰子扔在地上,所有骰子朝上的一面的点数之和为s.输入n,打印出s的所有可能的值和出现的概率. 解法一:基于递归求骰子点数. /////////////////基于递归求骰子点数///////// ...
- n个骰子的点数之和
题目:把n个骰子扔在地上,所有骰子朝上一面的点数之和为S.输入n,打印出S的所有可能的值出现的概率. 解题思路:动态规划 第一步,确定问题解的表达式.可将f(n, s) 表示n个骰子点数的和为s的排列 ...
- 《剑指offer(第二版)》面试题60——n个骰子的点数
一.题目描述 把n个骰子仍在地上,所有的骰子朝上的一面的点数之和为s,输入n,打印出s所有可能的值出现的概率. 二.题解 <剑指offer>上给出的两种方法,尤其是代码,晦涩难懂且没有注释 ...
随机推荐
- leetcode 849. Maximize Distance to Closest Person
In a row of seats, 1 represents a person sitting in that seat, and 0 represents that the seat is emp ...
- Spring容器三种注入类型
Spring注入有三种方式: 1.Set注入(使用最多) 2.构造器注入(使用不多) 3.接口注入(几乎不用)不做测试了 1.Set注入:所谓Set注入就是容器内部调用了bean的Set***方法,注 ...
- 201621123006 《Java程序设计》第2周学习总结
1. 本周学习总结 以几个关键词描述本周的学习内容.并将关键词之间的联系描述或绘制出来. 原则:少而精,自己写.即使不超过5行也可,但请一定不要简单的复制粘贴. java数据类型:java数据类型分为 ...
- ubuntu15.10运行android studio出错unable to run mksdcard sdk tool
问题:ubuntu运行android studio出错unable to run mksdcard sdk tool 系统版本:系统是ubuntu 15.10 64位 确认原因:缺少lib 解决方法: ...
- Alpha冲刺(2/10)
前言 队名:拖鞋旅游队 组长博客:https://www.cnblogs.com/Sulumer/p/9960487.html 作业博客:https://edu.cnblogs.com/campus/ ...
- Eclipse下配置Maven
1.修改maven根目录下的conf/setting.xml文件,主要修改localRepository属性,用于管理maven下载的jar文件存放的位置. 2.修改eclipse的maven配置,w ...
- Myeclipse WEB工程JSP使用JNDI 数据库连接池连接Mysql数据库
在网上查了很多,最后实现了.下面写一下过程: 首先,在WEBROOT/META-INF下建一个文件context.xml,内容为: <?xml version="1.0" e ...
- d3.js(v5.7)树状图
一.新建画布 二.数据处理 三.绘制连接线 图示: 四.绘制节点.文字 图示: 五.总结 path元素:其实就是定义了绘图的坐标点,从哪开始,移动到哪,怎样移动(命令) 具体可百度(或许以后我会总结一 ...
- Unity喷墨效果Shader实现
笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,已出版书籍:<手把手教你架构3D游戏引擎>电子工业出版社和<Unity3D实战核心技术详解 ...
- 使用json path设置关联
与正则表达式相比,这种方法会更简单一些: json path是在返回的是K-V的格式中根据key进行的关联,如果压的接口返回的是json的话,使用json path比较方便,如果不是json的话,就使 ...