剑指offer-面试题43:n个骰子的点数

零基础搭建机械零件检测系统:基于YOLOv8的PySide6可视化开发全攻略 本文详细介绍了如何从零开始搭建基于YOLOv8的机械零件检测系统,涵盖环境配置、数据集准备、模型训练优化及PySide6可视化界面开发全流程。通过实战案例展示YOLOv8在工业检测中的高效应用,帮助开发者快速实现自动化零件检测解决方案。 阅读详情

题目:把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s所有可能的值出现的概率。

思路:骰子六个点数,所以n个骰子出现的所有可能有6的n次方种。那么这个问题我们专注于求点数和s可能出现的次数,概率相除就可以了。假设点数和为n,那么最后一粒骰子可能出现1,2,3,4,5,6这六种可能,对于倒数第二颗骰子,如果在它之前的所有点数和为n-1,n-2,n-3,n-4,n-5,n-6,那么最后的点数和就为n。把每个骰子看成一次循环,和为n的骰子出现的次数应该等于上一次循环中骰子点数和n-1,n-2,n-3,n-4,n-5,n-6的次数的总和。这样倒推的方式似乎不好计算,那么顺推,从只有一个骰子开始计算,它出现1~6每个点数的次数都是1,如果有两个骰子,点数f(n) = f(n-1)+f(n-2)+f(n-3)+f(n-4)+f(n-5)+f(n-6),把数据保存在数组中,那么n个骰子应该有n行数组。注意到当前点数和出现的次数只与上一个数组有关,因此可以简化为用两个数组表示,每次交替的使用两个数组,一个作为上一次的循环结果,一个保存当前循环的数字。

void PrintProbability(int number)
{
    if(number < 1)
        return;
        
    int* pProbabilities[2];
    pProbabilities[0] = new int[g_maxValue * number + 1];
    pProbabilities[1] = new int[g_maxValue * number + 1];
    for(int i = 0; i < g_maxValue * number + 1; ++i)
    {
        pProbabilities[0][i] = 0;
        pProbabilities[1][i] = 0;
    }
    
    int flag = 0;
    for(int i = 1; i < g_maxValue; ++i)
        pProbabilities[flag][i] = 0;
        
    for(int k = 2; k <= number; ++k)
    {
        for(int i = 0; i < k; ++i)
            pProbabilities[1-flag][i] = 0;
            
        for(int i = k; i < g_maxValue * k; ++i)
        {
            pProbabilities[1-flag][i] = 0;
            for(int j = 1; j <= i && j <= g_maxValue; ++j)
                pProbabilities[1-flag][i] += pProbabilities[flag][i-j];
        }
        
        flag = 1 - flag;
    }
    
    double total = pow((double)g_maxValue, number);
    for(int i = number; i <= g_maxValue * number; ++i)
    {
        double ratio = (double)pProbabilities[flag][i] / total;
        printf("%d: %e\n", i, ratio);
    }
    
    delete[] pProbabilities[0];
    delete[] pProbabilities[1];
}


一个严谨的STM32串口DMA发送&接收(1.5Mbps波特率)机制 本文描述串口DMA收/发机制设计,及STM32串口DMA收/发实现。 阅读详情

相关推荐

【全网最全最详细】智能体提示词prompt教程

定义:提示词是用户输入给AI模型(如ChatGPT、MidJourney等)的指令或问题,用于引导模型生成特定类型的输出。它是用户与AI交互的核心媒介。作用:提示词的质量直接影响AI输出的准确性和相关性。好的提示词能明确任务边界、减少歧义,并激发模型的创造力。提示词就是“给AI下指令的说明书”——越清楚、越具体,AI干得越好!帮你更快、更准地拿到想要的结果,不用和AI“猜谜语”。

qq_38196449的博客 8218

剑指Offer:n个骰子的点数

把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;每个骰子的点数为1~6,n个骰子的点数和最小值为n,最大值为6n,所以n个骰子的点数和s有6n-n+1种情况(例如2个骰子的点数和有:2、3、4、5、6、7、8、9、10、11、12。共6*2-2+1=11种)。另外根据排列组合n...

带翅膀的猫的博客 4423

Vast.ai GPU服务器租用与SSH密钥连接实战指南

本文详细介绍了如何在Vast.ai平台租用GPU服务器并通过SSH密钥安全连接的全流程。从注册、选配GPU型号到SSH密钥生成与配置,再到实战中的端口转发和文件传输技巧,帮助用户高效利用云端GPU资源进行深度学习等计算密集型任务。

weixin_29574585的博客 527

《剑指Offer》60:n个骰子的点数

题目 把n个骰子扔在地上,所有骰子朝上一面的点数之和为S。输入n,打印出S的所有可能的值出现的概率。 分析 直接法 假设骰子有face面,有n个骰子,那么总排列数就有facen个。(例如,有3个6面骰子,那么其总排列数为63=216个)。所有骰子的和最小值为n(假设骰子最小值为1),而和最大值为n * face(例如,有3个6面骰子,那么和最大值为18), 那么就有 (n * face - n + 1)个可能和值,那么新建长度为(n * face - n + 1)的一维数组进行统计不同S出现的次数。 然后骰

KISS 308

PX4实战指南:通过遥控器通道直连实现舵机PWM控制

本文详细介绍了如何通过PX4飞控实现遥控器通道直连控制舵机PWM输出的完整流程。从硬件准备、遥控器配对到PX4参数配置和硬件连接,提供了实战技巧和常见问题解决方案,帮助无人机爱好者快速掌握舵机控制技术。重点讲解了AUX Passthrough模式设置和PWM参数调整等关键步骤。

weixin_29195217的博客 154

杰理的蓝牙芯片的key是什么?以及该如何添加key?杰理key文件原理

很多的工程师,在开发杰理蓝牙芯片的第一步就会有一个很深的疑惑,关于key的 1、什么是key文件? 2、Key文件是如何产生的? 3、为什么需要他key文件? 4、如何添加key文件? 5、以及实际开发中的一些报错该如何处理?

qyvhome的博客 4095

【剑指offer系列】67. 骰子的点数

【剑指offer系列】67. 骰子的点数

姚先生的全栈之路 277

MacBook M芯片第二篇:Homebrew安装

Homebrew是MacOS/Linux平台的软件包管理工具,提供便捷的安装、卸载、更新等功能。

码农魏轩 893

【LeetCode】剑指 Offer 60. n个骰子的点数 p294 -- Java Version

剑指 Offer 60. n个骰子的点数 --(解法:动态规划),把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。

汤姆lazy的优快云博客 886

智能硬件产品 App 全球发布 第 1 章:全球 App 发布战略设计

本章阐述智能硬件 App 全球发布战略,涵盖市场分析、竞争格局、用户画像及资源配置。通过制定可执行的全球化推广路径,整合地区法规合规、渠道分发策略与营销活动设计,助力团队快速进入主流商店并确立品牌影响力。同时构建可量化的 KPI 监控体系,指导项目进度追踪与效果复盘,确保产品迭代持续优化,降低运营总成本。

moton2017的博客 156

笔试题-2023-紫光展锐-数字芯片设计【纯净题目版】

笔试题-2023-紫光展锐-数字芯片设计【纯净题目版】

w0shishabi的博客 2923

剑指 Offer 60. n个骰子的点数(动态规划)

简单说一下题目,扔1次骰子,则可能的点数,1,2 ,3,4, 5,6。所以当扔骰子数n=1时,应该返回[1/6,1/6,1/6,1/6,1/6,1/6]递推公式:dp[i][j] = dp[i-1][j-1]+ dp[i-1][j-2]+ dp[i-1][j-3]…为了方便理解,数组下标为0时的情况作废,数组下标为1就代表n=1 就是第一次投掷的情况。当n=2的时候,总和可能性为[2,3,4,5,6,7,8,9,10,11,12]当只有一个骰子n=1时候,毫无疑问,总和可能性为[1,2,3,4,5,6]

深度不学习!!的博客 448

嵌入式工程师成长之路(2)——电路设计

为什么你的电源模块总是发热炸机?DC/DC和LDO选型的“潜规则”你踩坑了吗? LM2596降压芯片用错电容导致输出振荡?LED恒流驱动设计让灯珠寿命缩水50%?24V转12V方案成本超预算被老板狂喷?——这些血泪教训,谁能懂得!

云轩阁 13万+

【剑指offer】面试题43:n个骰子的点数

第一种思路是,每个骰子的点数从最小到最大,假设为1-6,那么所有的骰子从最小1开始,我们假设一种从左向右的排列,右边的最低,索引从最低开始,判断和的情况。 def setTo1(dices, start, end): for i in range(start, end): dices[i] = 1 def probability(n, s, dmax = 6, dmin = 1): i

shiquxinkong的专栏 2394

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

剑指Offer:面试题43 n个骰子的点数

/* n个骰子的点数: 把n个骰子仍在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。 骰子一共6个面。n个骰子的和的最小值为n,最大值为6n。n个骰子的所有点数的排列数为6^n。我们需用统计 每一个点数出现的次数,然后把每一个点数出现的次数除以6^n,就能求出每个点数出现的概率。 递归解法: 如何统计每个点数出现的次数? 可以把n个骰子分成两堆,第一

qingyuanluofeng的专栏 993

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

【一刷《剑指Offer》】面试题 43:n 个骰子的点数

所以最终需要返回的浮点数组的内容就会是这个样子:[#n / pow(6.0, n), #(n + 1) / pow(6.0, n), #(n + 2) / pow(6.0, n), ..., #6n / pow(6.0, n)]。投掷 n 个骰子,那么就会有 n 个面朝上,这 n 个朝上的面的点数之和 s 的最大值是 6*n,最小值是 n。:假如只有一个骰子(n=1),s 的范围是 [n, 6n],所以 s 的范围是 [1, 6],且 s 的每个值可能出现的次数都为 1。,k 属于 [1, 6]。

Elena's Blog 662

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

[算法] 剑指offer golang 面试题43:n个骰子的点数

[算法] 剑指offer golang 面试题43:n个骰子的点数 题目1: 把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。 你需要用一个浮点数数组返回答案,其中第 i 个元素代表这 n 个骰子所能掷出的点数集合中第 i 小的那个的概率。 示例 1: 输入: 1 输出: [0.16667,0.16667,0.16667,0.16667,0.16667,0.16667] 示例 2: 输入: 2 输出: [0.02778,0.05556,0.0

半亩方糖 802

《剑指offer》面试题43:n个骰子的点数

题目:把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印出k的所有可能的值出现的概率。思路:基于循环求骰子点数,时间性能好。在一次循环中,第一个数组中的第n个数字表示骰子和为n出现的次数。在下一次循环中,我们加上一个新的骰子,此时和为n的骰子出现的次数等于上一次循环中骰子点数和为n-1、n-2、n-3、n-4、n-5和n-6的次数的总和,所以我们把另一个数组的第n个数字设为前一个数组...

twostarxx的博客 587

剑指offer-面试题43:n个骰子的点数

扔n个骰子,求所有点数之和出现的概率 思路1:递归思想,扔一颗骰子,然后跟n-1个骰子的结果做计算 思路2:动态规划思想,递推,用一个数组保存n-1个骰子的概率结果。 class Solution1: """ 递归方法 """ def getDicePointProbRecursively(self, n): if n == 0: return ...

weixin_42766102的博客 352

剑指Offer面试题43(Java版):n个骰子的点数

题目:把n个骰子仍在地上,所有骰子朝上一面的点数之和为s,输入n,打印出s的所有可能的值出现的概率。

D.K专栏 4213

面试题43:n个骰子的点数(《剑指offer》)

需要再自己写一遍代码的题 参考思路http://www.cnblogs.com/AndyJee/p/4686208.html 题目: 把n个骰子仍在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。 思路: s可能出现的值的范围为:n--6*n 1、全排列 回溯法枚举n个骰子(6面)的全排列,然后计算每一次排列所有值的和,

点点滴滴 662

【重点】【DP】剑指offer——面试题43:n个骰子的点数

剑指offer——面试题43:n个骰子的点数 【注意】此题再牛客网上没有OnlineJudge,在此补充解法。 题目:把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。...

Allenlzcoder的博客 402

剑指offer面试题43:n个骰子的点数

#include "iostream" using namespace std; int g_maxValue = 6; void PrintProbability(int number) { if (number < 1) return; int *pProbabilities[2]; pProbabilities[0] = new int[g_maxValue*number + 1]

五条龙的博客 345

剑指offer——面试题43:n个骰子的点数

void PrintProbability_Solution1(int number) { if(number < 1) return; int maxSum = number * g_maxValue; int* pProbabilities = new int[maxSum - number + 1]; for(int i = number;

小凡的专栏 787

【剑指offer】6.4抽象建模能力——面试题43:n个骰子的点数

YYlxid————Nothing is possible if not try~ 510

用JAVA绘制四点骰子_剑指Offer面试题43(Java版):n个骰子的点数

题目:把n个骰子仍在地上。全部骰子朝上一面的点数之和为s,输入n,打印出s的全部可能的值出现的概率。解法一:基于递归求骰子的点数,时间效率不够高如今我们考虑怎样统计每个点数出现的次数。要向求出n个骰子的点数和。能够先把n个骰子分为两堆:第一堆仅仅有一个。还有一个有n-1个。单独的那一个有可能出现从1到6的点数。我们须要计算从1到6的每一种点数和剩下的n-1个骰子来计算点数和。接下来把剩下的n-1个...

weixin_29607629的博客 395
上一篇: 剑指offer-面试题42:翻转单词顺序VS左旋转字符串
下一篇: 剑指offer-面试题44:扑克牌的顺子
moses1213
博客等级 码龄12年 56粉丝 147原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值