[剑指Offer]60-n个骰子的点数
题意
输入骰子个数n,打印出所有骰子朝上的点的点数之和,及对应的概率。
题解
循环。
n个骰子,点数之和在n~6n范围内。计算n个骰子扔出和为m的情况数,等于n-1个骰子扔出m-1,m-2...m-6的情况数之和。
最终=m/6^n。
代码
#include <iostream>
#include <math.h>
#define MAX_N 10000
using namespace std;
class Solution{
public:
void printProbability(int n){
if(n<=0){
return;
}
cptTimes(n);
for(int i=n;i<=6*n;++i){
cout<<"总点数:"<<i<<endl;
cout<<"概率"<<cntNew[i]/pow(6,n)<<endl;
}
}
private:
long long cnt[6*MAX_N];
long long cntNew[6*MAX_N];
void cptTimes(int n){
for(int k=1;k<=n;++k){
if(k==1){
for(int i=1;i<=6;++i){
cnt[i]=1;
}
}
else{
memset(cntNew,0,sizeof(cntNew));
for(int i=k;i<=6*k;++i){
for(int j=1;j<=6&&i-j>=1;++j){
cntNew[i]+=cnt[i-j];
}
}
for(int i=k;i<=6*k;++i){
cnt[i]=cntNew[i];
}
}
}
}
};
int main(int argc, const char * argv[]) {
int n;
cin>>n;
Solution s=Solution();
s.printProbability(n);
return 0;
}
[剑指Offer]60-n个骰子的点数的更多相关文章
- 剑指 Offer 60. n个骰子的点数 + 动态规划 + 空间优化
剑指 Offer 60. n个骰子的点数 Offer_60 题目详情 题解分析 package com.walegarrett.offer; /** * @Author WaleGarrett * @ ...
- 剑指 Offer 60. n个骰子的点数
剑指 Offer 60. n个骰子的点数 把n个骰子扔在地上,所有骰子朝上一面的点数之和为s.输入n,打印出s的所有可能的值出现的概率. 你需要用一个浮点数数组返回答案,其中第 i 个元素代表这 n ...
- 【Java】 剑指offer(60) n个骰子的点数
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 把n个骰子扔在地上,所有骰子朝上一面的点数之和为s.输入n,打 ...
- 【剑指offer】n个骰子的点数,C++实现
# 题目 # 思路 # 代码
- 剑指Offer 60. 把二叉树打印成多行 (二叉树)
题目描述 从上到下按层打印二叉树,同一层结点从左至右输出.每一层输出一行. 题目地址 https://www.nowcoder.com/practice/445c44d982d04483b04a54f ...
- [剑指Offer] 60.把二叉树打印成多行
题目描述 从上到下按层打印二叉树,同一层结点从左至右输出.每一层输出一行. [思路]使用队列实现二叉树的层次遍历. /* struct TreeNode { int val; struct TreeN ...
- 剑指offer——60二叉树的深度
题目描述 输入一棵二叉树,求该树的深度.从根结点到叶结点依次经过的结点(含根.叶结点)形成树的一条路径,最长路径的长度为树的深度. 题解: 简单的深度遍历即可. class Solution ...
- 剑指offer-面试题60-n个骰子的点数-动态规划
/* 题目: 计算n个骰子,出现和s的概率. */ #include<iostream> #include<cstdlib> #include<stack> #in ...
- 剑指offer二刷(精刷)
剑指 Offer 03. 数组中重复的数字 题目描述 在一个长度为 n 的数组里的所有数字都在 0 到 n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字是重复的,也不知道每个数字重复几次. ...
- LeetCode:“剑指 Offer”
LeetCode:"剑指 Offer" 刷题小菜鸡,花了几天时间做了一遍 LeetCode 上给出的 "剑指 Offer" 在此做一下记录 LeetCode主页 ...
随机推荐
- 适用于移动设备弹性布局的js脚本(rem单位)
背景介绍 目前,随着移动设备的普及和4G网络的普及,web在移动端的占比已经远远超过PC端,各种H5页面推广页面,H5小游戏热度火爆.以前简单的使用px单位(没有弹性)的时代已经无法满足各位设计师和用 ...
- Linux系统的RAID磁盘阵列
RAID概念 磁盘阵列(Redundant Arrays of Independent Disks,RAID),有“独立磁盘构成的具有冗余能力的阵列”之意. 磁盘阵列是由很多价格较便宜的磁盘,以硬件( ...
- jmeter多sql查询
背景:实现多条sql语句,取多个值的情况 步骤:1.JDBC Connection Configuration配置添加?allowMultiQueries=true 2.增加sql语句 ,查询或修改语 ...
- 关于Hibernate和Strtus2的xml提示问题
话不多说,上图 1.Windom 2.preferences 3.搜索框搜索xml catalog 点击Add 4.导入约束(具体操作图上1.2.3)
- windows文件名格式的中文+数字混合字符串排序
记录一下 [DllImport("shlwapi.dll", CharSet = CharSet.Unicode)] private static extern int StrCm ...
- python 匿名函数&内置函数
匿名函数:为了解决那些功能很简单的需求而设计的一句话函数怎么定义匿名函数: cal = lambda x : x*x # cal是函数名,lambda是定义匿名函数的关键字 冒号前面的额x是参数即函数 ...
- python报以下错误:TypeError: 'int' object is not subscriptable
原因:数组忘了写下标,数组某项赋值成了 数组对象=数字: 查询其它人的博客,发现仍有其它可能引发此错误,无非是不可以相互操作的对象进行了操作或者是访问对象的方式不对,如:给数字加了下标,对一维数组加了 ...
- python3编码
一.字符编码 1.什么实字符编码:将人识别的字符转换成计算机能识别的01,而转换的过程或者规则就是字符编码表. 而这种字符编码表表示了一种对应关系. 2.常用的字符编码表有:ascii.unicode ...
- 《Java开发学习大纲文档》V6.0(已经不公布了,请查看第七版)
<Java开发大纲学习文档第六版>简介: 有需要的私聊作者QQ:253173641.
- Debian 安装 virtualbox
首先增加源: echo "deb http://download.virtualbox.org/virtualbox/debian stretch contrib" > /e ...