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

news2024/11/22 9:56:30

目录

一、编程题

1.年会抽奖

2.抄送列表

二、选择题

1.操作系统中关于竞争和死锁的关系下面描述正确的是?

2.并发是并行的不同表述,其原理相同。

3.在Unix系统中,处于()状态的进程最容易被执行。

 4.当系统发生抖动(thrashing)时,可以采取的有效措施是( )。Ⅰ.撤销部分进程 Ⅱ.增加磁盘交换区的容量 Ⅲ.提高用户进程的优先级


一、编程题

1.年会抽奖

链接:年会抽奖__牛客网 (nowcoder.com)

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

输入描述:

输入包含多组数据,每组数据包含一个正整数n(2≤n≤20)。

输出描述:

对应每一组数据,以“xx.xx%”的格式输出发生无人获奖的概率。

示例1

输入

2

输出

50.00%

🔎思路分析:这是一个经典的错排问题

❓❓什么是错排呢

用A、B、C......表示写着n位友人名字的信封,a、b、c......表示n份相应的写好的信纸。把错装的总数记作D(n)。假设把a错装进B里,包含这个错误的一切错装法分两类:

1️⃣b装入A里:这个时候每种错装的其余部分都与A、B、a、b无关,应有D(n-2)种错装法

2️⃣b装入A、B之外的一个信封,这时的装信工作实际是把(除a之外的)n-1份信纸b、c.......装入(除B以外的)n-1个信封A、C......,显然这时装错的方法有D(n-1)

总之:

在a装入B的错误之下,共有错装法D(n-2) + D(n-1)种

a装入C,装入D......的n-2种错误之下,同样有D(n-1) + D(n-2)种错装法,因此D(n) = n-1[D(n-1) + D(n-2)]

特殊的D(1) = 0,D(2) = 1

  

错排的递推公式是:D(n) = (n - 1) [D(n - 2) + D(n - 1)],也就是第n项为n - 1倍的前两项和。通过这个递推公式可以 得到在总数为n的时候,错排的可能性一共有多少种。那么要求错排的概率,我们还需要另一个数值,就是当总数为n的时候,所有的排列组合一共有多少种,那么根据排列组合,肯定是使用公式来求,也就是n的阶乘。所以结果很简单,就是用公式求出第n项的错排种类,和n的阶乘,然后两者一除,就是概率了。

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        long[] arr1 = new long[21]; //错排数组
        arr1[0] = arr1[1] = 0;
        arr1[2] = 1;
        long[] arr2 = new long[21]; //阶乘
        arr2[0] = arr2[1] = 1;//0的阶乘1;1的阶乘2;2的阶乘2
        arr2[2] = 2;
        for (int i = 3; i <= 20; i++) {
            arr1[i] = (i - 1) * (arr1[i - 1] + arr1[i - 2]);//错排的每一项
            arr2[i] = i * arr2[i - 1];//阶乘
        }
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            int n = scanner.nextInt();
            System.out.printf("%.2f%%\n", 100.0 * arr1[n] / arr2[n]);//100.0是用来转化为double
        }

    }
}

2.抄送列表

链接:抄送列表__牛客网 (nowcoder.com)

NowCoder每天要处理许多邮件,但他并不是在收件人列表中,有时候只是被抄送。他认为这些抄送的邮件重要性比自己在收件人列表里的邮件低,因此他要过滤掉这些次要的邮件,优先处理重要的邮件。
现在给你一串抄送列表,请你判断目标用户是否在抄送列表中。
输入描述:

输入有多组数据,每组数据有两行。

第一行抄送列表,姓名之间用一个逗号隔开。如果姓名中包含空格或逗号,则姓名包含在双引号里。总长度不超过512个字符。

第二行只包含一个姓名,是待查找的用户的名字(姓名要完全匹配)。长度不超过16个字符。

输出描述:

如果第二行的名字出现在收件人列表中,则输出“Ignore”,表示这封邮件不重要;否则,输出“Important!”,表示这封邮件需要被优先处理。

示例1

输入

Joe,Kewell,Leon

Joe

"Letendre, Bruce",Joe,"Quan, William"

William

输出

Ignore

Important!

🔎思路分析:

1️⃣通过Scanner的nextLine()方法获取第一行中的名字

2️⃣解析出第一行中的所有名字保存在HashSet中

3️⃣获取第二行中的名字,检测该名字是否存在,并按照题目的要求进行输出

import java.util.*;
public class Main{
    public static void main(String[] args){
        // 循环处理每组测试用例
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
        // 接收第一行的所有名字,并对名字进行分割,将分割好的名字放在Set
            String name = sc.nextLine();
            int i = 0;
            int end = 0;
            Set<String> s = new HashSet<>();
            while(i < name.length()){
                if('\"' == name.charAt(i)){
                    // 名字包含在""中
                    end = name.indexOf('\"', i + 1);
                    s.add(name.substring(i+1, end)); // 参数1:起始位置 参数2:表示末尾位置
                    //注意:该位置的字符不会被截取到,截取到该位置之前的字符
                            i = end + 2;
                }else{
                    // 名字没有包含在""中
                    end = name.indexOf(',', i+1);
                    if(-1 == end){
                        // 现在要分割的名字是最后一个名字
                        s.add(name.substring(i, name.length()));
                        break;
                    }
                    name.substring(i, end);
                    i = end + 1;
                }
            }
            // 获取第二行的名字并检测该名字是否在Set中存在
            name = sc.nextLine();
            if(s.contains(name)){
                System.out.println("Ignore");
            }else{
                System.out.println("Important!");
            }
        }
    }
}

二、选择题

1.操作系统中关于竞争和死锁的关系下面描述正确的是?

A、竞争一定会导致死锁

B、死锁一定由竞争引起

C、竞争可能引起死锁

D、预防死锁可以防止竞争

死锁的四个必要条件:
1️⃣互斥条件:一个资源每次只能被一个进程使用。
2️⃣请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
3️⃣不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。
4️⃣循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。

2.并发是并行的不同表述,其原理相同。

A 错

B 对

并发:多个进程在一个CPU下采用时间片轮转的方式,在一段时间之内,让多个进程都得以推进,称之为并发。

并行:多个进程在多个CPU下分别,同时进行运行,这称之为并行。

3.在Unix系统中,处于()状态的进程最容易被执行。

A 辅存睡眠

B 内存睡眠

C 内存就绪

D 辅存就绪

 4.当系统发生抖动(thrashing)时,可以采取的有效措施是( )。Ⅰ.撤销部分进程 Ⅱ.增加磁盘交换区的容量 Ⅲ.提高用户进程的优先级

A 仅Ⅰ

B 仅Ⅱ

C 仅Ⅲ

D 仅Ⅰ, Ⅱ

在具有对换功能的操作系统中,通常把外存分为文件区对换区。前者用于存放文件,后者用于存放从内存换出的进程。
抖动现象是指刚刚被换出的页很快又要被访问。为此,又要换出其他页,而该页又快被访问,如此频繁地置换页面,以致大部分时间都花在页面置换上。
I,撤销部分进程可以减少所要用到的页面数,防止抖动。
Ⅱ和Ⅲ,对换区大小和进程优先级都与抖动无关。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

git版本升级后的问题

升级后的版本 git version 2.40.1.windows.1问题 RSA公钥和私钥是否有问题&#xff08;本地和gitlab&#xff09;[Git for Windows]的升级日志 Git for Windows 2.36.1 Git for Windows 2.33.0(2) 查看OpenSSH版本信息 OpenSSH v8.7p1 OpenSSH v8.8p1 解决方案 在本机~/.ss…

轨交展:人大金仓护航“中国式现代化的开路先锋”

2023北京-青岛国际城市轨道交通展览会 以“智赋城轨、绿色发展”为主题&#xff0c;2023北京-青岛国际城市轨道交通展览会暨高峰论坛于4月27日-29日在青岛举办&#xff0c;人大金仓携自主创新技术成果以及系列行业解决方案亮相&#xff0c;受到用户、伙伴的广泛关注和高度认可。…

GaussDB数据库基础函数介绍-下

接上一篇&#xff0c;本节继续介绍GaussDB数据库常用基础函数 目录 5、范围函数 6、窗口函数 7、聚集函数 8、安全函数 9、系统信息函数 10、动态脱敏函数 GaussDB常用基础函数介绍与示例 5、范围函数 在GaussDB数据库中&#xff0c;范围函数是指用于处理数据库范围的函…

Linux — 线程池及多线程结尾

目录 一、线程池 线程池的应用场景&#xff1a; 线程池示例&#xff1a; 二、线程安全的单例模式 什么是单例模式 什么是设计模式 单例模式的特点 饿汉实现方式和懒汉实现方式 三、STL,智能指针和线程安全 四、其他常见的各种锁 五、读者写者问题(了解) 读写锁 读写…

搭建Stable Diffusion WebUI详细过程

文章目录 1、环境搭建1.1、GPU服务器选择1.2、配置服务器环境 2、源码和模型下载3、安装依赖库文件4、运行项目5、视频教程 1、环境搭建 为了方便&#xff0c;这里直接选择Vultr提供的已安装Anaconda的Ubuntu 22.04系统。 如果你自己电脑有足够的显存&#xff0c;你也可以在自…

Nacos Config 配置帐号密码加密后,注入过程中如何解密?

背景 线上项目规定不能在配置文件中出现帐号、密码的明文信息&#xff0c;所以必须加密。 引入 Nacos Config 配置后&#xff0c;Nacos Config 帐号密码、加密&#xff0c;服务注册发现也用相同的 nacos 帐号密码&#xff0c;那么如何解密才能保证 Nacos Config 服务能够正确…

【C语言】typedef关键字

文章目录 一. 使用介绍1. 对一般类型进行重命名2. 对结构体类型进行重命名3. 对指针进行重命名4. 对数组进行重命名 二. typedef 和 #define 的区别 一. 使用介绍 typedef 的作用就是对类型进行重命名&#xff0c;具体作用在以下几个方面&#xff1a; 对一般类型进行重命名对…

IP协议的相关特性

IP协议的相关特性 &#x1f50e;地址管理动态分配NATIPv6 &#x1f50e;IP 地址的组成网络主机号的划分IP 地址分类(A, B, C, D, E)子网掩码特殊的 IP 地址 &#x1f50e;路由选择 图片来自网络 &#x1f50e;地址管理 IP地址, 本质上是一个32位的整数 通常会把32位的整数, 转…

基于ChatGLM-Med与HuaTuo的微调部署

文章目录 ChatGLM-Med推理过程微调过程 HuaTuo配置环境模型下载推理过程微调过程 如何基于领域知识对类ChatGPT模型进行微调&#xff0c;以提升类ChatGPT模型在领域的问答效果&#xff1f; 有下面两个模型&#xff0c;一起来看看微调后的效果如何。 ChatGLM-Med: 基于中文医学知…

2023亚马逊云科技研究,数字化技能为中国企业和员工带来经济效益

在中国&#xff0c;信息技术在个人、企业和宏观经济层面都推动着重大变革。为了研究这些变化所带来的影响&#xff0c;盖洛普咨询公司(Gallup)和亚马逊云科技开展了关于数字化技能的调研。 研究表明&#xff0c;数字化技能正在为中国企业和在职人员带来巨大的经济价值&#x…

【Python】贪吃蛇 —— 无聊必备的小项目

作者主页&#xff1a;爱笑的男孩。的博客_CSDN博客-深度学习,活动,YOLO领域博主爱笑的男孩。擅长深度学习,活动,YOLO,等方面的知识,爱笑的男孩。关注算法,python,计算机视觉,图像处理,深度学习,pytorch,神经网络,opencv领域.https://blog.csdn.net/Code_and516?typecollect个人…

【python】keras包:深度学习( RNN循环神经网络 Recurrent Neural Networks)

RNN循环神经网络 应用&#xff1a; 物体移动位置预测、股价预测、序列文本生成、语言翻译、从语句中自动识别人名、 问题总结 这类问题&#xff0c;都需要通过历史数据&#xff0c;对未来数据进行预判 序列模型 两大特点 输入&#xff08;输出&#xff09;元素具有顺序关系…

透过金瑞基金一季度运营报告,看满帮创新故事背后的长期价值

投资中国市场该投哪些行业、哪些公司&#xff1f;在投资界&#xff0c;KraneShares金瑞基金长期致力于为这个问题提供答案。中概投资者都十分熟悉的KWEB——中概互联网指数ETF&#xff0c;就来自金瑞基金。 近日&#xff0c;金瑞基金发布了2023年第一季度运营报告&#xff0c;…

入门款但配置高 极米投影仪Z6X Pro轻松打造家庭影院

近年来&#xff0c;智能投影仪凭借大屏沉浸式体验以及使用场景灵活多变的便利性深受消费者欢迎。现如今&#xff0c;智能投影仪既能替代电视的职能&#xff0c;也能灵活融入小居室、出租屋等生活场景&#xff0c;顺理成章成为年轻人的“潮品”。京东电器2022年发布的《年轻人潮…

BetaFlight统一硬件配置文件研读之dma命令

BetaFlight统一硬件配置文件研读之dma命令 1. 源由2. 代码分析2.1 cliDma2.2 showDma2.3 cliDmaopt 3. 实例分析4. 配置情况4.1 dma4.2 dma show4.3 dma device list4.4 dma pin list4.5 dma device id4.5.1 dma adc id4.5.2 dma TIMUP id4.5.3 dma pin id 4.6 dma device id s…

BI技巧丨计算组单位切换

PowerBI自带的数据显示单位有千、百万、十亿等&#xff0c;很明显这些数据单位有些时候是不太符合国人的使用习惯的。 在计算组出来之前&#xff0c;我们习惯利用配置表的方式&#xff0c;将这种数据单位转换为符合我们习惯的方式&#xff1b;在计算组出来之后&#xff0c;我们…

石油化工企业防雷工程应用解决方案

随着现代石油化工行业的不断发展&#xff0c;防雷工程的重要性也越来越凸显。在石油化工行业中&#xff0c;防雷工程是一项至关重要的工作&#xff0c;因为石油化工行业常常面临雷电等自然灾害的威胁&#xff0c;这些灾害可能导致严重的安全事故和经济损失。石化企业其生产过程…

Word处理控件Aspose.Words功能演示:使用 C# 在 Word 文档中创建和修改 VBA 宏

Aspose.Words 是一种高级Word文档处理API&#xff0c;用于执行各种文档管理和操作任务。API支持生成&#xff0c;修改&#xff0c;转换&#xff0c;呈现和打印文档&#xff0c;而无需在跨平台应用程序中直接使用Microsoft Word。此外&#xff0c; Aspose API支持流行文件格式处…

Vue版本2+模拟VueRouter的history模式

文章目录 分步骤实现创建 VueRouter 类创建静态方法&#xff0c;实现 install实现构造函数实现 createRouteMap实现 initComponents 方法 - router-link实现 initComponents 方法 - router-view实现 initEvents 完整代码 分步骤实现 创建 VueRouter 类 /*** VueRouter Class*…

RHEL软件包管理

3.1 RHEL软件包管理 完善的软件包管理机制对于操作系统来说是非常重要的&#xff0c;没有软件包管理器&#xff0c;用户使用操作系统将会变得非常困难&#xff0c;也不利于操作系统的推广。用户要使用Linux&#xff0c;需要了解Linux的包管理机制。随着Linux的发展&#xff0…