牛客链接

年会抽奖

题目

今年公司年会的奖品特别给力,但获奖的规矩却很奇葩:

  1. 首先,所有人员都将一张写有自己名字的字条放入抽奖箱中;
  2. 待所有字条加入完毕,每人从箱中取一个字条;
  3. 如果抽到的字条上写的就是自己的名字,那么“恭喜你,中奖了!”
    现在告诉你参加晚会的人数,请你计算有多少概率会出现无人获奖?

输入描述

输入包含多组数据,每组数据包含一个正整数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);}
}

年会抽奖(错排算法)相关推荐

  1. 信封问题(错排算法)

    题目描述: * 假设有n封信要装入到n个信封中,每封信应该要放到对应的信封中:* 信: A,B,C,D...* 信封: a,b,c,d...* 由于疏忽将信放置出错,总共有多少种可能性每封信都放错.* ...

  2. PAT——年会抽奖(错位 排序 )

    题目描述 今年公司年会的奖品特别给力,但获奖的规矩却很奇葩: 1. 首先,所有人员都将一张写有自己名字的字条放入抽奖箱中:2. 待所有字条加入完毕,每人从箱中取一个字条:3. 如果抽到的字条上写的就是 ...

  3. 排列组合之错排问题总结

    目测最近要刷刷关于排列组合的题目... 所以现在将遇到的那些熟悉却已经忘记的问题都总结一下.. 第一发: 错排以及错排公式 其实错排问题对于程序算法而言,就是递归问题.因为错排的理解其实就是相当于阶乘 ...

  4. 错排问题之年会抽奖与抄送列表

    目录 一.编程题 1.年会抽奖 2.抄送列表 二.选择题 1.操作系统中关于竞争和死锁的关系下面描述正确的是? 2.并发是并行的不同表述,其原理相同. 3.在Unix系统中,处于()状态的进程最容易被 ...

  5. 【离散数学中的数据结构与算法】十一 错排问题

    错排问题比较难,但是也是经典算法问题 文章目录 1 错排问题 2 总结 1 错排问题 家中阳台有10盆不同的花,为保持新鲜感,希望每天重新摆放,使得每盆花都不在第一天放的位置.那么最多可以保持多少天每 ...

  6. 年会抽奖算法C语言实现1

    功能描述: 年会抽奖有特等奖,1,2,3等奖,根据设定概率,随机出现是哪个奖项,且总奖数维持和设定值一样. #include <iostream> //#include <stdli ...

  7. (抄送列表,年会抽奖)笔试强训

    博主简介:想进大厂的打工人 博主主页:@xyk: 所属专栏: JavaEE初阶 目录 文章目录 一.[编程题]抄送列表 二.[编程题]年会抽奖 一.[编程题]抄送列表 链接:抄送列表__牛客网 来源: ...

  8. 《年会抽奖》:无人获奖的概率

    目录 一.题目 二.思路 1.错排问题 2.n 的阶乘 3.输出格式要求 三.代码 一.题目 题目:年会抽奖            题目链接:年会抽奖 今年公司年会的奖品特别给力,但获奖的规矩却很奇葩 ...

  9. 错排问题(以航电OJ 2048 为例)

    神.上帝以及老天爷 Problem Description HDU 2006'10 ACM contest的颁奖晚会隆重开始了! 为了活跃气氛,组织者举行了一个别开生面.奖品丰厚的抽奖活动,这个活动的 ...

  10. 动态规划——斐波那契数列(70. 爬楼梯、198. 打家劫舍、213. 打家劫舍II、信件错排、母牛生产)

    递归和动态规划都是将原问题拆分成多个子问题然后求解,但是动态规划存储了子问题的解,不需要重复计算. 动态规划(Dynamic Programming,DP)需要转移方程和边界条件. 目录 一.70. ...

最新文章

  1. 缺陷的JIRA管理文档
  2. Centos7系统创建Docker本地仓库
  3. 深度学习(神经网络) —— BP神经网络原理推导及python实现
  4. 神策数据第五届“星斗奖”榜单公布!
  5. Spring boot 打包jar 将配置文件分离
  6. Vue — 第七天(vue-cli-案例)
  7. 无锡太湖学院计算机科学与技术宿舍,无锡太湖学院宿舍条件,宿舍环境图片(10篇)...
  8. 随机数演示(窗体应用程序)
  9. linux命令之PS
  10. bootstrap课程5 bootstrap中的组件使用的注意事项是什么
  11. win10中plt绘图显示中文
  12. Fiddler原理~知多少?
  13. ARM裸机开发(三)SDRAM编程
  14. 199.二叉树的右视图
  15. java读取文件效率优化_java 读文件 性能
  16. ios获取本地音乐库音乐很详细
  17. RPG游戏制作-06-与NPC的交互
  18. 使用JohnTheRipper对有密码加密的ZIP压缩包文件进行暴力破解
  19. 中国越野汽车电子市场趋势报告、技术动态创新及市场预测
  20. Ubuntu 18.04刷机问题汇总

热门文章

  1. 数据恢复基础和进阶教程(二)
  2. Android 打包AAB+PAD(java篇)
  3. 临时解决Mac OS系统下kernel_task占用大量CPU资源导致系统卡顿一例(不用删plist文件)
  4. 【稀饭】react native 实战系列教程之热更新原理分析与实现
  5. BAT 批处理注释命令rem、@rem和::
  6. 信道估计之LMMSE估计
  7. 东芝2303am维护清零_东芝打印机2303A怎样清零
  8. HTML5游子吟网页的完整代码,游子吟
  9. 2022年工业互联网厂商全景地图
  10. java jdom jar_jdom jar