前言

接我原先的文章,因为一场考试,让我对这道题记忆深刻

注:(因为那道题,所以80分)

正文

1.分析题目

题目:

某人写了 n 封信和 n 个信封,如果所有的信都装错了信封。求所有信都装错信封共有多少种不同情况。

输入格式

一个信封数 n,保证 n≤20。

输出格式

一个整数,代表有多少种情况。

考虑特殊情况,若信封数为0,则一种,若信封数位两,则1种。

可以构造函数:

def g(n):if n==1:return 0if n==2:return 1

若大于二,则使用错排问题)

错排问题

错排问题概述

错排问题(Derangement Problem)是组合数学中的一个经典问题,指在排列中没有任何一个元素出现在其原始位置的情况。具体来说,给定n个元素,求所有排列中满足“没有元素在初始位置”的排列数,记为D(n)。

错排公式推导

错排数D(n)可以通过递推公式或显式公式计算:

递推公式: [ D(n) = (n-1) \times (D(n-1) + D(n-2)) ] 初始条件: [ D(1) = 0 ] [ D(2) = 1 ]

显式公式: [ D(n) = n! \times \left(1 - \frac{1}{1!} + \frac{1}{2!} - \frac{1}{3!} + \dots + (-1)^n \frac{1}{n!}\right) ] 或简化为: [ D(n) = \left\lfloor \frac{n!}{e} + \frac{1}{2} \right\rfloor ] 其中e是自然对数的底数(约2.71828),⌊·⌋表示取整函数。

错排问题的实现代码

以下是错排数的两种实现方式:递归和动态规划。

递归实现
def derangement_recursive(n):if n == 1:return 0if n == 2:return 1return (n - 1) * (derangement_recursive(n - 1) + derangement_recursive(n - 2))

动态规划实现
def derangement_dp(n):if n == 1:return 0if n == 2:return 1dp = [0] * (n + 1)dp[1], dp[2] = 0, 1for i in range(3, n + 1):dp[i] = (i - 1) * (dp[i - 1] + dp[i - 2])return dp[n]

错排问题的应用

错排问题在实际中有多种应用,例如:

  • 密码学中用于生成无固定点的排列。
  • 概率论中用于计算“完全混乱”的概率。
  • 算法设计中用于某些排列相关的优化问题。

示例

计算n=4时的错排数:

  • 显式公式计算: [ D(4) = 4! \times \left(1 - \frac{1}{1!} + \frac{1}{2!} - \frac{1}{3!} + \frac{1}{4!}\right) = 24 \times \left(1 - 1 + 0.5 - 0.1667 + 0.0417\right) = 9 ]
  • 递推公式计算: [ D(4) = 3 \times (D(3) + D(2)) = 3 \times (2 + 1) = 9 ]

两种方法结果一致。

固有错排公式(n-1)*(g(n-1)+g(n-2))

完整代码

def xf(n):if n==1:return 0if n==2:return 1if n>2:return (n-1)*(xf(n-1)+xf(n-2))
n=int(input())
print(xf(n))

感谢大家点赞收藏!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/93360.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/93360.shtml
英文地址,请注明出处:http://en.pswp.cn/web/93360.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

提升化工制造质量的 7 种方法

尽管化工制造属于制造业的一个子类别,但它是一个广泛的范畴,涵盖了基础化学品、树脂和合成纤维、农药和化肥、涂料和粘合剂,甚至消费类化合物(如肥皂和清洁化学品)等所有领域。尽管这些细分领域差异巨大,但…

从“数据垄断”到“全民共建”:Dataparts如何重构智能时代的数据流通规则?

从“数据垄断”到“全民共建”:Dataparts如何重构智能时代的数据流通规则?在杭州某科技园区的会议室里,一场关于“AI大模型训练数据”的讨论正在激烈进行。某头部AI企业的技术总监指着屏幕上的“对话场景零件库”说:“过去我们花3…

31 HTB Union 机器 - 中等难度

第一阶段 侦查nmap扫描oxdfparrot$ nmap -p- --min-rate 10000 -oA scans/nmap-alltcp 10.10.11.128 Starting Nmap 7.80 ( https://nmap.org ) at 2021-11-19 08:29 EST Nmap scan report for 10.10.11.128 Host is up (0.092s latency). Not shown: 65534 filtered ports POR…

【数据分享】上市公司创新韧性数据(2007-2023)

数据介绍核心看点: 在复杂多变的市场环境中,企业如何通过创新维持竞争力?创新韧性是衡量企业在外部冲击下保持创新活力的关键指标。本文分享2007-2023年上市公司创新韧性数据,为研究企业抗风险能力提供核心支持。数据概览数据名称…

服务器配置开机自启动服务

一、配置启动文件sudo vim /etc/systemd/system/smartailab-backend.service sudo vim /etc/systemd/system/reall3d-frontend.servicesudo vim /etc/systemd/system/Culture_Liquor-backend.servicevim /etc/systemd/system/Culture_Liquor-backend.service内容:[U…

Ubuntu 25.04更新了哪些内容揭秘

2025年4月,Canonical正式推出Ubuntu 25.04 版本,代号"Plucky Puffin(勇敢的海鹦)"。此次发布围绕AI算力强化、桌面交互革新与跨架构支持三大核心方向展开,为开发者、创作者及企业用户带来多项突破性升级。 一、核心系统更新 systemd v257.4带来了重要的上游更新…

PHP反序列化的CTF题目环境和做题复现第2集_POP链构造

1 通过pop参数get方式提交反序列信息 2 题目 http://192.168.1.8/fxl2/fxl2_pop.php <?php highlight_file(__FILE__);class a {protected $var;public function hello(){echo $this->var;} }class b {public $cla;public function __destruct(){$this->cla->…

攻防世界—fakebook(两种方法)

一.审题这边先进行测试&#xff0c;login和join都失败了&#xff0c;所以没获取到什么消息。二.dirsearch工具扫描所以拿dirsearch扫一下&#xff0c;看看有没有什么文件可以访问。python3 dirsearch.py -u url可以看到当前目录下存在flag.php,robots.txt等&#xff0c;访问fla…

AI+物联网如何重塑仓储供应链?3个落地场景与系统架构设计思路

一、引言 在科技飞速发展的当下&#xff0c;AI与物联网技术的融合为仓储供应链领域带来了革新契机。这种融合不仅优化了传统运作模式&#xff0c;还催生出更智能、高效的管理方案&#xff0c;业财一体管理软件也在其中发挥着关键作用。 二、AI物联网在仓储供应链的落地场景 &am…

C++ 内存管理(内存分布 , 管理方式 , new和delete实现原理)

目录 1. C/C内存分布 练习: 2. C语言动态内存管理方式 2.1 malloc/calloc/realloc的区别 2.2 malloc的实现原理 2.3 内存块分布与扩容 3. C动态内存管理方式 3.1 new/delete操作类内置类型 1. new操作内置类型 2. delete操作内置类型 3.2 new/delete操作类自定义类型…

1.2. qemu命令起虚拟机增加网络配置

1. 网络配置 常见的网络模式分为tap网络和基础网络模式两种。 1.1. TAP网络&#xff08;桥接模式&#xff09; 虚拟机直接接入宿主机物理网络&#xff0c;获得独立IP 1.1.1. 使用tap方式起虚拟机网络-netdev tap,idhostnet0,ifnametap0 \-device virtio-net-pci,netdevhostnet0…

分享一个Oracle表空间自动扩容与清理脚本

一、基础环境准备&#xff08;首次执行&#xff09; -- 1. 创建表空间监控表&#xff08;存储使用率、容量等信息&#xff09; create table monitor_tablespace_rate (tbs_name varchar2(50), -- 表空间名total_gb number, -- 总容量(GB)used_gb number, …

Flink Sql 按分钟或日期统计数据量

一、环境版本 环境版本Flink1.17.0Kafka2.12MySQL5.7.33 【注意】Flink 1.13版本增加Cumulate Window&#xff0c;之前版本Flink Sql 没有 Trigger 功能&#xff0c;长时间的窗口不能在中途触发计算&#xff0c;输出中间结果。比如每 10S 更新一次截止到当前的pv、uv。只能用T…

LeetCode 2460.对数组执行操作

给你一个下标从 0 开始的数组 nums &#xff0c;数组大小为 n &#xff0c;且由 非负 整数组成。 你需要对数组执行 n - 1 步操作&#xff0c;其中第 i 步操作&#xff08;从 0 开始计数&#xff09;要求对 nums 中第 i 个元素执行下述指令&#xff1a; 如果 nums[i] nums[i …

深入解析 @nestjs/typeorm的 forRoot 与 forFeature

nestjs/typeorm 是 NestJS 与 TypeORM 集成的官方模块&#xff0c;提供了 forRoot() 和 forFeature() 两个核心静态方法用于配置数据库连接和实体注册。本文将深入解析这两个方法的机制、使用场景和最佳实践。 一、TypeOrmModule.forRoot() - 全局数据库配置 forRoot() 方法用于…

关于simplifyweibo_4_moods数据集的分类问题

本来打算用情感分类数据集拿Transformer模型来练练手&#xff0c;发现训练效果并不好。当我分析了这个数据集的标签后发现问题了&#xff1a; 查看标签的分布&#xff1a; import pandas as pd# 先直接读取数据&#xff0c;不进行后续处理 data_file ~/data/simplifyweibo_4_m…

Custom SRP - Baked Light

https://catlikecoding.com/unity/tutorials/custom-srp/baked-light/本篇教程介绍将静态光照烘焙到 light map 和 light prob 中.首先贴上我遇到的问题,希望遇到的同学帮忙解答:实践本教程过程中,定义的 MetaPass 没有效果, Unity 始终在使用默认的 meta pass,我使用的是 unit…

[Python]PTA:实验2-3-1-for 求1到100的和

本题要求编写程序&#xff0c;计算表达式 1 2 3 ... 100 的值。输入格式&#xff1a;本题无输入。输出格式&#xff1a;按照以下格式输出&#xff1a;sum 累加和代码如下&#xff1a;x0 for i in range(1,101,1):xi print("sum {}".format(x))

【解决笔记】MyBatis-Plus 中无 selectList 方法

MyBatis-Plus 中无 selectList 方法的解决笔记 核心前提 MyBatis-Plus 的 BaseMapper 接口内置了 selectList 等基础查询方法&#xff0c;继承该接口可直接使用&#xff0c;无需手动实现。 无 selectList 方法的两种情况及解决方式 1. 未继承 BaseMapper&#xff08;推荐方案&a…

一周学会Matplotlib3 Python 数据可视化-绘制箱线图(Box)

锋哥原创的Matplotlib3 Python数据可视化视频教程&#xff1a; 2026版 Matplotlib3 Python 数据可视化 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 课程介绍 本课程讲解利用python进行数据可视化 科研绘图-Matplotlib&#xff0c;学习Matplotlib图形参数基本设置&…