【Python蓝桥杯】印章 共有n种图案的印章,每种图案的出现概率相同。小A买了m张印章,求小A集齐n种印章的概率。

蓝桥杯-算法训练-DP 问题描述共有n种图案的印章,每种图案的出现概率相同。小A买了m张印章,求小A集齐n种印章的概率。输入格式一行两个正整数n和m输出格式一个实数P表示答案,保留4位小数。样例输入2 3样例输出0.7500数据规模和约定1≤n,m≤20。 阅读详情

最近在刷蓝桥杯题目,按题目做一下笔记整理,顺便分享交流一下,有更好的解决方案欢迎大家共同提出探讨,以下源代码为系统提交满分答案

印章

问题描述

资源限制
Python时间限制:5.0s
问题描述
共有n种图案的印章,每种图案的出现概率相同。小A买了m张印章,求小A集齐n种印章的概率。
输入格式
一行两个正整数n和m
输出格式
一个实数P表示答案,保留4位小数。
样例输入
2 3
样例输出
0.7500
数据规模与约定
1≤n,m≤20

源代码

n,m = map(int,input().split())
#  创建二位数组
'''
    创建m+1行 n+1列的二维数组
    输入4 3
    dp = [
            [0, 0, 0, 0, 0], 
            [0, 0, 0, 0, 0], 
            [0, 0, 0, 0, 0], 
            [0, 0, 0, 0, 0]
        ]
'''
dp = [[0 for i in range(n + 1)] for i in range(m + 1)]
for i in range(1 , m + 1):
    for j in range(1 , n + 1):
        if i < j :
            dp[i][j] = 0
        elif j == 1:
            dp[i][j] = pow(1 / n ,i - 1)
        else:
            dp[i][j] = dp[i-1][j] * (1/n) * j + dp[i-1][j-1] * (1/n)*(n-(j-1))

print("{:.4f}".format(dp[m][n]))

问题分析

该题为经典的DP(动态规划)问题,需要使用DP(动态规划)思想解决
什么是DP(动态规划)呢?
用非人话说,DP基本性质:
1、问题具有最优⼦结构性质:问题所包含的⼦问题的解也是最优的。
2、⽆后效性:算⼀步是⼀步,只会存储当前的运算结果。为下⼀步计算提供结果。
DP的解题核心:写出递归问题的转移⽅程并确定转移⽅程的边界条件。

用人话转述就是:一个问题可以被分解为诸多子问题,每一个求解结果都依赖于上一步的结果,同时在计算中需要注意边界值的判断

本题需要分情况考虑,初步思考为:
1.需要集齐的印章数 > 购买的印章的数量
2.需要集齐印章数为1,购买的印章数量为1
3.需要集齐印章数为1,购买的印章数量大于1
4.其它情况
下面进行具体分析:
1.当需要集齐的印章数 > 购买的印章的数量时,此时是不可能集齐的,P必定为0
2.当需要集齐的印章数为1,购买的印章数量为1时,此时我们购买的那一张印章一定为唯一的那一种图案,P必定为1
3.当需要集齐印章数为1,购买的印章数量大于1时,假设购买的印章为4张(i=4):
第一张必定抽取到唯一的印章图案,P为1;第二张需要从n种印章中抽取刚才抽取的那一种图案,因此需要乘1/n(n为印章图案总数);第三张仍需要从n种印章中抽取刚才抽取的那一种图案,因此再乘1/n;第四张同理。因此,当需要集齐印章数为1,购买的印章数量大于1时,P = (1/n)^(i-1)
请添加图片描述
4.其它情况下,又可分为两种子情况:
(1)抽取的印章图案为已有的图案(重复)
假设在购买3张时已经集齐了三种印章图案(i=3,j=3),那么下一张一定会出现已拥有三种图案中的一种,也就是只能从n中抽取已存在的三张,由i,j之间的关系推出这种情况的概率为dp[i-1][j]*(1/n)*j
在这里插入图片描述
(2)抽取的印章图案为新的图案
假设印章图案还没有收集完成,那么此时抽取的印章便为新的印章图案,只能从未抽取过的n-(j-1)个图案中进行选择(-1是因为本次抽取还没有完成,因此本次的印章不用减掉,被减数j需要-1 -> 也可以理解成减掉j后把本次的印章加上,再加一 n-j+1),由i,j之间的关系推出这种情况的概率为dp[i-1][j-1]*(1/n)*(n-(j-1))
在这里插入图片描述
将两种情况相加就是dp[i][j]的概率,在进行一番循环计算后,只需要输出二位数组的最后一位数dp[m][n],即我们所需要求的概率

测评结果
在这里插入图片描述


更多题目,点击查看👇
Python蓝桥杯 基础练习题目整理👈
Python蓝桥杯 算法训练题目整理👈
Python蓝桥杯 算法提高题目整理👈
Python蓝桥杯 历届真题题目整理👈
Python蓝桥杯 练习系统题目整理(全)👈

自适应动态规划硕士博士论文学习 强化学习关注随机过程中的序贯决策问题,而自适应动态规划关注动态系统的控制问题。吸引域:系统渐近稳定的区域。 阅读详情

相关推荐

信息隐藏 数字图像空域隐写与分析技术的实现

【代码】信息隐藏 数字图像空域隐写与分析技术的实现。

Yungoal的博客 470

共有n种图案的印章,每种图案的出现概率相同。小A买了m张印章,求小A集齐n种印章的概率。

蓝桥杯 奖章题

Atututuyao的博客 7210

深入解析Apollo Lattice Planner:自动驾驶轨迹规划的核心算法与实践

本文深入解析了百度Apollo自动驾驶平台中的核心轨迹规划算法——Lattice Planner。文章详细阐述了其作为车辆“即时决策者”的工作原理,通过“采样-评估”的六步流程(Frenet坐标转换、状态采样、轨迹生成、硬约束过滤、代价函数打分及决策平滑),在复杂路况下实时规划出安全、舒适、高效的行驶轨迹。该算法是自动驾驶实现智能决策与精准控制的关键技术。

weixin_29090677的博客 831

蓝桥杯 算法训练 印章

蓝桥杯 算法训练 印章 共有n种图案的印章,每种图案的出现概率相同。小A买了m张印章,求小A集齐n种印章的概率。 输入输出: 一行两个正整数n和m 一个实数P表示答案,保留4位小数。 样例: 2 3 0.7500 这是个dp问题,存在两个变量,印章种类和购买的个数可以使用二维数组来进行模拟dp[m][n] 来表示在购买m个印章的情况下,存在n种印章数的情况 对情况进行分析 对于dp[i][j] 第一种情况 : i < j 即购买的印章小于存在的印章种类 ,概率肯定为0 第二种情况:i

streams_star的博客 4996

【DAY11】超参数调整专题1

核心优势: 它不是随机选择下一个点,而是根据先前评估的结果建立一个概率模型(通常是高斯过程),预测哪些参数组合可能产生更好的结果,并据此选择下一个评估点。这使得它在寻找最优解方面通常比随机搜索更高效(用更少的迭代次数达到相似或更好的性能),特别是当模型训练(单次评估)非常耗时的时候。实际上,有着非常多的方式可以实现贝叶斯优化,上面的代码比较简洁美观,贝叶斯优化和网格搜索的代码书写风格高度一致。- 需要定义参数的搜索空间,与随机搜索类似,当搜索空间非常大时,它通常比网格搜索和随机搜索更有效。

daomingwu1的博客 748

WVP-GB28181-Pro配置避坑指南:从零到上线全流程详解(含ZLM自动同步技巧)

本文详细解析了WVP-GB28181-Pro视频平台的配置流程,特别针对国标视频平台部署中的常见陷阱,如stream-ip/sdp-ip配置错误、ZLM自动同步问题及端口冲突等,提供了实用的解决方案和优化建议,帮助开发者快速实现从零到上线的全流程部署。

weixin_30836759的博客 93

C语言-蓝桥杯-算法训练 印章

问题描述 共有 n 种图案的印章,每种图案的出现概率相同。小A买了 m 张印章,求小A集齐 n 种印章的概率。 输入格式 一行两个正整数n和m。 输出格式 一个实数P表示答案,保留4位小数。 样例输入 2 3 样例输出 0.7500 解题思路 共有 n 种图案的印章,每种图案的出现概率相同。故买到某种图案的印章的概率为 1/n 。 买了 i 次,集齐 j 种图案。 当 i < j 是不可能事件,故概率为 0 ; 当 j = 1 时,表达买了 i 次,买的都是同一种,故概率为(1/n)^ j * n

qq_45256352的博客 3456

18650电池组流体直冷热管理仿真:COMSOL多物理场耦合建模路线与实战策略

在动力电池与储能系统的热管理设计中,多物理场耦合仿真已成为平衡性能与成本的关键工具。液冷方案的换热极限促使行业转向制冷剂直冷技术,而两相流与电池产热的强耦合特性,使得基于COMSOL的数值建模成为评估系统温升与流动分配的重要手段。工程实践中,电化学-热-流场全耦合模型与集总电池-流场简化模型各有适用场景,前者揭示电池内部微观机理,后者则以高计算效率支撑包级方案迭代。通过合理简化几何、标定内阻与熵热系数、设置等效换热边界,仿真能够准确预测直冷系统在快充或大倍率放电下的温度均匀性与压降特性,从而指导流道优化与制

weixin_33585822的博客 314

试题 算法训练 印章(C语言版)(官网测试已通过)

问题描述   共有n种图案的印章,每种图案的出现概率相同。小A买了m张印章,求小A集齐n种印章的概率。 输入格式   一行两个正整数n和m 输出格式   一个实数P表示答案,保留4位小数。 样例输入 2 3 样例输出 0.7500  话不多说先上代码 #include <stdio.h> #include <stdlib.h> int main() { int n,m;//m<20(张 n>=1(种 scanf("%d %d.

菜鸟的博客 4640

Unity类银河战士恶魔城学习总结(P162 Improve skeleton提升敌人的效果)

为敌人添加了快慢刀

suzh1qian的博客 572

OpenHarmony之Histreamer引擎深度解析:pipeline_core架构如何全面取代GStreamer,一统音视频播放与录制

Histreamer是OpenHarmony多媒体框架的核心媒体引擎,采用架构设计。一个轻量级的媒体引擎组件,提供播放、录制等场景的媒体数据流水线处理。1.播放场景分为如下几个节点:数据源读取、解封装、解码、输出;2.录制场景分为如下几个节点:数据源读取、编码、封装、输出。该引擎从OH5.0开始取代了原有的媒体引擎gstreamer(部分文档还保留较老架构的讲解),提供统一的音视频播放、录制、元数据解析等能力。

m0_67505153的博客 333

[蓝桥杯python] 印章:共有n种图案的印章,每种图案的出现概率相同。小A买了m张印章,求小A集齐n种印章的概率

[蓝桥杯python] 印章:共有n种图案的印章,每种图案的出现概率相同。小A买了m张印章,求小A集齐n种印章的概率

Callme_TeacherPi 2960

YOLO11多类别数据集的类别平衡方法:讲解类别不平衡问题的识别方法,以及过采样、欠采样、类别权重调整等解决方案(一)

类别不平衡问题是机器学习和计算机视觉领域中一个常见但棘手的挑战。简单来说,当数据集中不同类别的样本数量存在显著差异时,我们就称这个数据集存在类别不平衡问题。在YOLO目标检测任务中,这意味着某些类别的目标对象在训练数据中出现得非常频繁,而其他类别的目标对象则很少出现。 想象一下,你正在训练一个交通监控系统,需要检测不同类型的车辆。在这个场景中,"汽车"这个类别可能有成千上万个实例,而"自行车"或"摩托车"可能只有几百个实例。这种数量上的巨大差异就是典型的类别不平衡问题。 从数学角度来看,假设我们有一个包

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 941

蓝桥杯 Python 练习题 印章

资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述   共有n种图案的印章,每种图案的出现概率相同。小A买了m张印章,求小A集齐n种印章的概率。 输入格式   一行两个正整数n和m 输出格式   一个实数P表示答案,保留4位小数。 样例输入 2 3 样例输出 0.7500 数据规模和约定   1≤n,m≤20 n,m=map(int,input().split()) dp=[[0 for i in range(n+1)]for i in range(m+1)].

qq_57844679的博客 8158

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

蓝桥杯试题 算法训练 印章_python_个人练习

资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述   共有n种图案的印章,每种图案的出现概率相同。小A买了m张印章,求小A集齐n种印章的概率。 输入格式   一行两个正整数n和m 输出格式   一个实数P表示答案,保留4位小数。 数据规模和约定   1≤n,m≤20 此题采用动态规划的方法求解,动态规划的三要素:最优子结构 #2021.11.15 试题 算法训练 印章 import numpy as np n,m = map(int,input().spli...

weixin_43539781的博客 7833

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

蓝桥杯Python练习题18-印章

(4)当j > i,且i ≠ 1时,假设前几张购买的印章均不存在种类重复,而下一张印章对已经集齐的i种印章中也依然不存在重复,则dp[i][j] = P∗(n-j-1)/n = dp[i-1][j-1] ∗ (n-j-1)/n。(3)当j > i,且i ≠ 1时,假设前几张购买的印章均不存在种类重复,而下一张印章对已经集齐的i种印章中存在重复,则dp[i][j] = P∗j/n = dp[i-1][j]∗j/n。(2)当i = 1时,即需要集齐的印章种数为1时,若j = 1,则dp[i][j] = 1;

YSL_Lsy_的博客 1973

蓝桥杯 试题 算法训练 印章

试题 算法训练 印章 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 共有n种图案的印章,每种图案的出现概率相同。小A买了m张印章,求小A集齐n种印章的概率。 输入格式 一行两个正整数n和m 输出格式 一个实数P表示答案,保留4位小数。 样例输入 2 3 样例输出 0.7500 数据规模和约定 1≤n,m≤20 代码: #include <iostream> #include <cmath> using namespace std; int mai

chic1018的博客 1739

蓝桥杯算法训练印章dp-快速幂-python题解

印章(dp+快速幂+格式化输出) 问题描述   共有n种图案的印章,每种图案的出现概率相同。小A买了m张印章,求小A集齐n种印章的概率。 输入格式   一行两个正整数n和m 输出格式   一个实数P表示答案,保留4位小数。 样例输入 2 3 样例输出 0.7500 数据规模和约定   1≤n,m≤20 n,m=map(int,input().split()) dp=[[0 for i in range(21)]for j in range(21)] p=1/n def quick_multi(n, m):

weixin_47704833的博客 622

蓝桥杯 ALGO-1007 印章 动态规划 python

题目 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述   共有n种图案的印章,每种图案的出现概率相同。小A买了m张印章,求小A集齐n种印章的概率。 输入格式   一行两个正整数n和m 输出格式   一个实数P表示答案,保留4位小数。 样例输入 2 3 样例输出 0.7500 数据规模和约定   1≤n,m≤20 思路 跟力扣相比,蓝桥杯考察更多的是与数学想结合。 ...

lishuaigell的博客 1437

蓝桥杯算法DP练习题——印章

首先,定义一个状态f[i][j]这个状态的含义是手里有i个印章,集齐j种印章的概率。

qq_60907062的博客 1208

蓝桥杯python印章

问题描述   共有n种图案的印章,每种图案的出现概率相同。小A买了m张印章,求小A集齐n种印章的概率。 输入格式   一行两个正整数n和m 输出格式   一个实数P表示答案,保留4位小数。 样例输入 2 3 样例输出 0.7500 数据规模和约定   1≤n,m≤20 问题解答 (74条消息) 蓝桥杯试题 算法训练 印章_python_个人练习_图南_的博客-优快云博客 ...

qq_53700791的博客 6634

Python 印章代码(附有解析)

2.代码 #共有n种图案的印章,每种图案的出现概率相同。小A买了m张印章,求小A集齐n种印章的概率。 n,m=map(int,input().split()) dp=[[0 for i in range(n+1)]for j in range(m+1)] for i in range(1,m+1): for j in range(1,n+1): if(j>i): dp[i][j]=0 elif(j==1):

qq_51096893的博客 3667

蓝桥杯算法训练-印章

这一题是10月份新加的题,网上也没啥答案,标签为dp动态规划,实际上我觉得不用动态规划也能做,毕竟python是自带了求组合数的函数,下面来看一下吧。 试题 算法训练 印章 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述   共有n种图案的印章,每种图案的出现概率相同。小A买了m张印章,求小A集齐n种印章的概率。 输入格式   一行两个正整数n和m 输出格式   一个实数P表示答案,保留4位小数。 样例输入 2 3 样例输出 0.7500 数...

ArthasMenethil110的博客 7582

问题一:蓝桥杯(印章)

这个问题是一个经典的概率问题,即“收集券问题”,也被称为“餐巾纸问题”。问题的核心在于求解收集到全部不同类型券(在本例中为印章)的概率。:每购买一张新印章时,集齐某种数量印章的概率依赖于之前购买的印章。例如,集齐3种印章的概率可以基于集齐2种或3种印章的概率计算得出。:在计算集齐不同数量印章的概率时,会重复考虑某些情况,如购买了4张印章集齐2种印章的概率会在计算集齐更多种类印章的概率时再次用到。共有n种图案的印章,每种图案的出现概率相同。小A买了m张印章,求小A集齐n种印章的概率。一行两个正整数n和m。

qq_45933822的博客 576

蓝桥杯——ALGO-1007——印章

题目描述如下: 问题描述   共有n种图案的印章,每种图案的出现概率相同。小A买了m张印章,求小A集齐n种印章的概率。 输入格式   一行两个正整数n和m 输出格式   一个实数P表示答案,保留4位小数。 样例输入 2 3 样例输出 0.7500 解法: 看着dp就感觉很难,参考完解析发现是可以想通的。自己做这样的题目,慢慢摸索出了技巧。 技巧就是:一支笔和一张草稿纸 也看到递归的解法,不够这里讲的是循环。 dp的状态转换可以看成是当印章数量i和图案种类j变化时,对应当前状态下

qq_38959366的博客 302

蓝桥杯——印章

首先,我们需要理解问题的背景。这是一个涉及概率和组合的问题,我们需要计算小A买了m张印章后,集齐所有n种图案印章的概率。具体来说,我们首先计算所有可能的印章组合,然后减去那些缺少一种印章的组合,再加上那些缺少两种印章的组合,如此往复,直到计算完所有的情况。最后,我们将计算得到的符合要求的印章组合数量除以所有可能的组合数量,就得到了所求的概率。所有可能的组合有8种(AA,AB,BA,BB,AAA,AAB,ABA,ABB)。其中,有6种组合(AB,BA,AAB,ABA,ABB,BAA)包含了所有的印章图案。

m0_73581472的博客 446

试题 算法训练 印章

资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述   共有n种图案的印章,每种图案的出现概率相同。小A买了m张印章,求小A集齐n种印章的概率。 输入格式   一行两个正整数n和m 输出格式   一个实数P表示答案,保留4位小数。 样例输入 2 3 样例输出 0.7500 数据规模和约定   1≤n,m≤20 以下是源代码(只拿了50……): #include<stdio.h> #include<math.h> int main(vo

yabyijun的博客 760
上一篇: 【Python蓝桥杯】序列求和 求1+2+3+...+n的值。
下一篇: 【Python蓝桥杯】拿金币 有一个N x N的方格,每一个格子都有一些金币,只要站在格子里就能拿到里面的金币。你站在最左上角的格子里,每次可以从一个格子走到它右边或下边的格子里。
Insight.
博客等级 码龄6年 6337粉丝 58原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Insight.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值