年会抽奖(错排算法)
牛客链接
年会抽奖
题目
今年公司年会的奖品特别给力,但获奖的规矩却很奇葩:
- 首先,所有人员都将一张写有自己名字的字条放入抽奖箱中;
- 待所有字条加入完毕,每人从箱中取一个字条;
- 如果抽到的字条上写的就是自己的名字,那么“恭喜你,中奖了!”
现在告诉你参加晚会的人数,请你计算有多少概率会出现无人获奖?
输入描述
输入包含多组数据,每组数据包含一个正整数n(2≤n≤20)。
输出描述
对应每一组数据,以“xx.xx%”的格式输出发生无人获奖的概率。
错排算法讲解
B站讲解
解题思路
错排算法的实现。
设n个人有Dn种错排方案,让n号人抽取k号(非n)的名字,有(n-1)种方案
那么对于k号的人来说分两种情况
第一种,k号的人抽n号的名字,那么剩下的人错排方案有D(n-2)种
第二种,k号的人不抽n号的名字,那么剩下的人的错排方案有D(n-1)种
得出,所有的错排方案D(n) = (n-1)*[D(n-1)+D(n-2)]
若求概率,则在分母中除以所有的方案(n的阶乘)即可,公式为
题中所求概率= 所有错排方案/所有方案
代码实现
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);while (scanner.hasNext()) {int n = scanner.nextInt();double result = (arrage(n)/fact(n))*100;System.out.println(String.format("%.2f",result) +"%");}}private static double arrage(int n) {if (n == 1) {return 0;}if (n == 2) {return 1;}return (n-1)*(arrage(n-1)+arrage(n-2));}//求n的阶乘private static double fact(int n) {if (n==1) return 1;return n*fact(n-1);}
}
年会抽奖(错排算法)相关推荐
- 信封问题(错排算法)
题目描述: * 假设有n封信要装入到n个信封中,每封信应该要放到对应的信封中:* 信: A,B,C,D...* 信封: a,b,c,d...* 由于疏忽将信放置出错,总共有多少种可能性每封信都放错.* ...
- PAT——年会抽奖(错位 排序 )
题目描述 今年公司年会的奖品特别给力,但获奖的规矩却很奇葩: 1. 首先,所有人员都将一张写有自己名字的字条放入抽奖箱中:2. 待所有字条加入完毕,每人从箱中取一个字条:3. 如果抽到的字条上写的就是 ...
- 排列组合之错排问题总结
目测最近要刷刷关于排列组合的题目... 所以现在将遇到的那些熟悉却已经忘记的问题都总结一下.. 第一发: 错排以及错排公式 其实错排问题对于程序算法而言,就是递归问题.因为错排的理解其实就是相当于阶乘 ...
- 错排问题之年会抽奖与抄送列表
目录 一.编程题 1.年会抽奖 2.抄送列表 二.选择题 1.操作系统中关于竞争和死锁的关系下面描述正确的是? 2.并发是并行的不同表述,其原理相同. 3.在Unix系统中,处于()状态的进程最容易被 ...
- 【离散数学中的数据结构与算法】十一 错排问题
错排问题比较难,但是也是经典算法问题 文章目录 1 错排问题 2 总结 1 错排问题 家中阳台有10盆不同的花,为保持新鲜感,希望每天重新摆放,使得每盆花都不在第一天放的位置.那么最多可以保持多少天每 ...
- 年会抽奖算法C语言实现1
功能描述: 年会抽奖有特等奖,1,2,3等奖,根据设定概率,随机出现是哪个奖项,且总奖数维持和设定值一样. #include <iostream> //#include <stdli ...
- (抄送列表,年会抽奖)笔试强训
博主简介:想进大厂的打工人 博主主页:@xyk: 所属专栏: JavaEE初阶 目录 文章目录 一.[编程题]抄送列表 二.[编程题]年会抽奖 一.[编程题]抄送列表 链接:抄送列表__牛客网 来源: ...
- 《年会抽奖》:无人获奖的概率
目录 一.题目 二.思路 1.错排问题 2.n 的阶乘 3.输出格式要求 三.代码 一.题目 题目:年会抽奖 题目链接:年会抽奖 今年公司年会的奖品特别给力,但获奖的规矩却很奇葩 ...
- 错排问题(以航电OJ 2048 为例)
神.上帝以及老天爷 Problem Description HDU 2006'10 ACM contest的颁奖晚会隆重开始了! 为了活跃气氛,组织者举行了一个别开生面.奖品丰厚的抽奖活动,这个活动的 ...
- 动态规划——斐波那契数列(70. 爬楼梯、198. 打家劫舍、213. 打家劫舍II、信件错排、母牛生产)
递归和动态规划都是将原问题拆分成多个子问题然后求解,但是动态规划存储了子问题的解,不需要重复计算. 动态规划(Dynamic Programming,DP)需要转移方程和边界条件. 目录 一.70. ...
最新文章
- 缺陷的JIRA管理文档
- Centos7系统创建Docker本地仓库
- 深度学习(神经网络) —— BP神经网络原理推导及python实现
- 神策数据第五届“星斗奖”榜单公布!
- Spring boot 打包jar 将配置文件分离
- Vue — 第七天(vue-cli-案例)
- 无锡太湖学院计算机科学与技术宿舍,无锡太湖学院宿舍条件,宿舍环境图片(10篇)...
- 随机数演示(窗体应用程序)
- linux命令之PS
- bootstrap课程5 bootstrap中的组件使用的注意事项是什么
- win10中plt绘图显示中文
- Fiddler原理~知多少?
- ARM裸机开发(三)SDRAM编程
- 199.二叉树的右视图
- java读取文件效率优化_java 读文件 性能
- ios获取本地音乐库音乐很详细
- RPG游戏制作-06-与NPC的交互
- 使用JohnTheRipper对有密码加密的ZIP压缩包文件进行暴力破解
- 中国越野汽车电子市场趋势报告、技术动态创新及市场预测
- Ubuntu 18.04刷机问题汇总
热门文章
- 数据恢复基础和进阶教程(二)
- Android 打包AAB+PAD(java篇)
- 临时解决Mac OS系统下kernel_task占用大量CPU资源导致系统卡顿一例(不用删plist文件)
- 【稀饭】react native 实战系列教程之热更新原理分析与实现
- BAT 批处理注释命令rem、@rem和::
- 信道估计之LMMSE估计
- 东芝2303am维护清零_东芝打印机2303A怎样清零
- HTML5游子吟网页的完整代码,游子吟
- 2022年工业互联网厂商全景地图
- java jdom jar_jdom jar