​【java】蓝桥杯——小蓝与钥匙_全错排列​

news/2024/5/17 11:26:11/文章来源:https://blog.csdn.net/weixin_61082895/article/details/129806086

 题目链接:小蓝与钥匙

问题描述

小蓝是幼儿园的老师, 他的班上有 28 个孩子, 今天他和孩子们一起进行了 一个游戏。

小蓝所在的学校是寄宿制学校, 28 个孩子分别有一个自己的房间, 每个房 间对应一把钥匙, 每把钥匙只能打开自己的门。现在小蓝让这 28 个孩子分别将 自己宿舍的钥匙上交, 再把这 28 把钥匙随机打乱分给每个孩子一把钥匙, 有 28!=28×27×⋯×128!=28×27×⋯×1 种分配方案。小蓝想知道这些方案中, 有多少种方案恰有 一半的孩子被分到自己房间的钥匙 (即有 14 个孩子分到的是自己房间的钥匙, 有 14 个孩子分到的不是自己房间的钥匙)。

答案提交

这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一 个整数, 在提交答案时只填写这个整数, 填写多余的内容将无法得分。

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 512M

 题目分析

先从28个人选定14个人拿直接的钥匙,再进行全错排列:14个人拿的钥匙都不是自己的

全错排列公式:D(n) = (n-1) [D(n-2) + D(n-1)]

递推推导过程

当n个编号元素放在n个编号位置,元素编号与位置编号各不对应的方法数用D(n)表示,那么D(n-1)就表示n-1个编号元素放在n-1个编号位置,各不对应的方法数,其它类推.

  • 第一步,把第n个元素放在一个位置,比如位置k,一共有n-1种方法;

  • 第二步,放编号为k的元素,这时有两种情况:
    ⑴把它放到位置n,那么,对于剩下的n-1个元素,由于第k个元素放到了位置n,剩下n-2个元素就有D(n-2)种方法;
    ⑵第k个元素不把它放到位置n,这时,对于这n-1个元素,有D(n-1)种方法;

  • 综上得到
    D(n) = (n-1) [D(n-2) + D(n-1)]
    特殊地,D(1) = 0, D(2) = 1

  •  贴一个链接

    错排问题(全错排)_不想悲伤到天明的博客-CSDN博客

题目代码 

public class 小蓝与钥匙 {public static void main(String[] args) {long a = 14;long m = 14;long n = 28;long res = D(a) * pailie(n, m);System.out.println(res);}//全错排列 14public static long D(long a) {if (a == 0 || a == 1) {return 0;}if (a == 2) {return 1;}return (a - 1) * (D(a - 1) + D(a - 2));}//C 28 14public static long pailie(long n, long m) {long res = 1l;for (int i = 0; i < m; i++) {res = res * (n - i) / (i + 1);}return res;}
}

 

 

 

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

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

相关文章

给CSDN消息通知的一封建议-----设计更好的信息阅读界面

目录一、前言二、一些建议2.1 如何区分各类人来的信息&#xff1f;2.2 如何显示我特别需要处理的信息&#xff1f;2.3 可以有信息流的显示方法么&#xff1f;2.4 UI 设计有什么需要改进的地方&#xff1f;2.5 可以用 AI 技术来达到什么帮助&#xff1f;2.6 个人小建议一、前言 …

Matplotlib 数据绘图基础入门

0、介绍 在使用机器学习方法解决问题的过程中&#xff0c;一定会遇到需要针对数据进行绘图的场景。Matplotlib 是支持 Python 语言的开源绘图库&#xff0c;因为其支持丰富的绘图类型、简单的绘图方式以及完善的接口文档&#xff0c;深受 Python 工程师、科研学者、数据工程师等…

★DCDC相关

1.电感选型 饱和电流&#xff1a;电感下降30%对应电流 温升电流&#xff1a;电感产生40℃对应电流 饱和电流>温升电流>输出额定电流*1.3&#xff1b;满载时峰值电流&#xff1b;限流保护点&#xff08;过流或短路不饱和&#xff09; DCR直流等效电阻 自谐振频率&am…

【ChatGPT】ChatGPT 能否取代程序员?

Yan-英杰的主页 悟已往之不谏 知来者之可追 C程序员&#xff0c;2024届电子信息研究生 目录 前言: ChatGPT 的优势 自然语言的生成 文本自动生成 建立了更人性化的人机交互 ChatGPT 的局限性 算法的解释能力较差 程序的可实现性较差 缺乏优化和质量控制 程序员相较于 …

4.2--Redis总结之高可用篇(关于哨兵机制)---(温故而知新篇)--加油呀

1.为什么要有哨兵机制&#xff1f; 在 Redis 的主从架构中&#xff0c;由于主从模式是读写分离的&#xff0c;如果主节点挂了&#xff0c;那么将没有主节点来服务客户端的写操作请求&#xff0c;也没有主节点给从节点进行数据同步了 哨兵机制&#xff0c;它的作用是实现主从节…

VUE3 学习笔记(六)Post 实现文件下载(Delphi 后台)

目录 一、实现原理 二、前端代码实现 三、后端代码实现&#xff08;delphi&#xff09; 四、实际运行截图 正常情况下&#xff0c;下载文件是使用Get方法&#xff0c;但是&#xff0c;有时候有些场景是需要通过Post方法模拟实现文件下载。 一、实现原理 前端通过Post请求&…

《程序员面试金典(第6版)》 面试题 08.11. 硬币(动态规划,组合问题,C++)

题目描述 硬币。给定数量不限的硬币&#xff0c;币值为25分、10分、5分和1分&#xff0c;编写代码计算n分有几种表示法。(结果可能会很大&#xff0c;你需要将结果模上1000000007) 示例1: 输入: n 5 输出&#xff1a;2 解释: 有两种方式可以凑成总金额: 55 511111 示例2: 输…

深度学习openMMLab的介绍和使用

文章目录MMCV介绍MMCV的安装修改链接中的cu113修改链接中的torch1.10.0物体分类MMCLS源码下载配置参数解读配置文件的组成如何生成完整配置文件定义自己的数据集构建自己的数据集训练自己的任务物体检测MMDetection语义分割MMSegmentation姿态估计MMPose未完成&#xff0c;持续…

MATLAB程序设计基础(三)

目录 1、实验目的&#xff1a; 2、实验内容 1、实验目的&#xff1a; 1&#xff09;熟悉MATLAB程序编辑与设计环境&#xff1b; 2&#xff09;掌握各种编程语言语法规则及程序设计方法&#xff1b; 3&#xff09;熟悉函数文件的编写与设计&#xff1b; 4&#xff09;了解和熟…

osgFBO(九)多pass---2,pass2,shader将背景从红色变为绿色

二&#xff0c;pass2是比较完整的&#xff0c;同时有输入纹理和输出纹理 与pass1类似&#xff0c;这里只列出不同的地方 1,pass2摄像机输入tex1 osg::ref_ptr<osg::StateSet> stateset pass2Camera->getOrCreateStateSet();{stateset->setTextureAttributeAndMod…

Nacos下载安装与配置(windows)

一、Nacos下载 官网地址&#xff1a;home (nacos.io) 点击前往Github&#xff0c;跳转至Github下载页面。 点击Tags&#xff0c;跳转至版本选择页面&#xff0c;此处选择2.2.0版本。 点击nacos-server-2.2.0.zip&#xff0c;进行下载。 二、Nacos安装 将下载的压缩包解压至需…

c#委托详解

简介 委托是一种能够将方法作为参数传递、存储方法并且调用方法的类型&#xff0c;它可以让我们写出更加灵活和可扩展的代码。委托通常用于回调 (Callback) 机制&#xff0c;比如在事件处理、异步编程、LINQ 查询等场景中常常会使用委托。它可以将方法作为参数传递给其他方法&…

某面试官分享经验:看求职者第一眼,开口说第一句话,面试结果就差不多定了,准确率高达90%以上...

我们以前分享过许多经验&#xff0c;但大多是站在打工人的视角上&#xff0c;今天给大家带来一个面试官的经验&#xff1a;1. 看求职者第一眼&#xff0c;开口说第一句话&#xff0c;面试结果就差不多定了&#xff0c;准确率高达90%以上。2. 绝不考八股文&#xff0c;如果问技术…

[前端]DOM操作 事件

DOM操作 JavaScript组成 ECMAScript&#xff1a;javascript核心DOM&#xff1a;文档操作BOM&#xff1a;浏览器对象 DOM 概念&#xff1a; 文档对象模型&#xff0c;网页解析过程中&#xff0c;会将所有标签整合起来看成一个document对象。这个对象里面包含各种操作元素的a…

ThreeJs-光源强度(二十二)

关键代码&#xff1a; //控制灯光强度 gui.add(directionalLight, intensity).min(0).max(30).step(1).name("灯光强度"); 完整代码&#xff1a; <template> <div id"three_div"></div> </template> <script&g…

51 序列模型【动手学深度学习v2】(笔记)

一、序列模型 1、什么是序列数据?数据是有时序结构的&#xff0c;比如电影的评价随时间变化变化 2、还有更多的序列数据 3、在b发生的情况下&#xff0c;a也发生的概率 4、反序&#xff1a;用未来的事情推测过去的事情&#xff0c;但有时在物理上是不可行的&#xff0c;因为时…

愚人节,聊聊那些正在坑人的“新型AI”

几年前的一个愚人节&#xff0c;我们和大家聊过AI技术被作为诈骗工具的情况。很不幸&#xff0c;当时讨论的一些苗头&#xff0c;现在都成了电诈犯罪中屡见不鲜的手段。更可气的是&#xff0c;随着AI技术与应用本身的发展&#xff0c;犯罪分子的AI手段不减反增。一些“新型AI”…

【C语言学习】数组

数组&#xff08;Array&#xff09;就是一些列具有相同类型的数据的集合&#xff0c;这些数据在内存中依次挨着存放&#xff0c;彼此之间没有缝隙。 数组不是C语言的专利&#xff0c;Java、C、C#、JavaScript、PHP 等其他编程语言也有数组。 C语言数组属于构造数据类型。一个…

C++面经总结4

说一下new和malloc的区别 new是操作符&#xff0c; malloc是函数 malloc申请的空间是不能初始化的&#xff0c; 而new是可以初始化的 malloc申请空间的时候需要手动计算空间大小&#xff0c;而new可以直接在[]里面给个数就行。 malloc的返回值是void*, 使用时必须强转&#xf…

配置C语言编译环境

配置GCC编译器 由于VScode这个软件只是一个编辑器&#xff0c;要使用VScode来编译C语言代码首先要配置编译器&#xff0c;这里的编译器使用的是MInGW&#xff0c;这个编译器是将gcc编译器移动到了Windows电脑中。 下载MinGW编译器 下载地址:https://sourceforge.net/projects/…