算法:根据一个开关确定一百人是否都进入过房间

2024-06-02 21:08

本文主要是介绍算法:根据一个开关确定一百人是否都进入过房间,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

该算法来源于我研究生课堂上,老师提出的一讨论题:

假设教室有一开关,现有100人,他们必须设计一个规则,利用该开关确定所有的人都进入过教室,所有人在设计好规则后都不允许再接触共享信息,且每个人被叫入教室的时机和次数都是随机的。


场景一:假设教室的开关的状态一开始为off(两种状态,off和on)

思路:从100个人中选择一个人进行计数,并且只有计数的人才能关闭按钮,其他非计数人如果进入该教室,有三种选择:

1.如果发现开关处于on状态就什么也不做直接出去

2.如果发现开关处于off状态且自己为第一次进入教室则将开关打开

3.如果发现开关处于off状态且自己为非第一次进入教室则直接离开教室

   最终直至计数人确定已关闭由其他人开启的99次开关后,报告所有人已全部进入过房间。


场景二:假设教室的开关一开始状态不知

思路:仍然从100个人中选择一个人进行计数,并且只有计数的人才能关闭按钮,此时其他非计数的人需都按两次开关,有种选择:

1.如果发现开关处于on状态就什么也不做直接出去

2.如果发现开关处于off状态且自己为第一次进入教室则将开关打开

3.如果发现开关处于off状态且自己为第二次进入教室则将开关打开

4.如果发现开关处于off状态且自己已两次进入教室则直接离开教室

    最终直至计数人确定已关闭198次开关后,报告所有人已全部进入过房间。


该算法为课堂小游戏,觉得这个比较有趣,就把其记录下来,一开始大家讨论的时候都说要七个开关,老师说一个的时候大家都炸了,不过如果真只有一个开关,这个游戏得花不少时间。

这篇关于算法:根据一个开关确定一百人是否都进入过房间的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1025085

相关文章

Java中的雪花算法Snowflake解析与实践技巧

《Java中的雪花算法Snowflake解析与实践技巧》本文解析了雪花算法的原理、Java实现及生产实践,涵盖ID结构、位运算技巧、时钟回拨处理、WorkerId分配等关键点,并探讨了百度UidGen... 目录一、雪花算法核心原理1.1 算法起源1.2 ID结构详解1.3 核心特性二、Java实现解析2.

python判断文件是否存在常用的几种方式

《python判断文件是否存在常用的几种方式》在Python中我们在读写文件之前,首先要做的事情就是判断文件是否存在,否则很容易发生错误的情况,:本文主要介绍python判断文件是否存在常用的几种... 目录1. 使用 os.path.exists()2. 使用 os.path.isfile()3. 使用

如何确定哪些软件是Mac系统自带的? Mac系统内置应用查看技巧

《如何确定哪些软件是Mac系统自带的?Mac系统内置应用查看技巧》如何确定哪些软件是Mac系统自带的?mac系统中有很多自带的应用,想要看看哪些是系统自带,该怎么查看呢?下面我们就来看看Mac系统内... 在MAC电脑上,可以使用以下方法来确定哪些软件是系统自带的:1.应用程序文件夹打开应用程序文件夹

Python如何判断字符串中是否包含特殊字符并替换

《Python如何判断字符串中是否包含特殊字符并替换》这篇文章主要为大家详细介绍了如何使用Python实现判断字符串中是否包含特殊字符并使用空字符串替换掉,文中的示例代码讲解详细,感兴趣的小伙伴可以了... 目录python判断字符串中是否包含特殊字符方法一:使用正则表达式方法二:手动检查特定字符Pytho

使用雪花算法产生id导致前端精度缺失问题解决方案

《使用雪花算法产生id导致前端精度缺失问题解决方案》雪花算法由Twitter提出,设计目的是生成唯一的、递增的ID,下面:本文主要介绍使用雪花算法产生id导致前端精度缺失问题的解决方案,文中通过代... 目录一、问题根源二、解决方案1. 全局配置Jackson序列化规则2. 实体类必须使用Long封装类3.

Springboot实现推荐系统的协同过滤算法

《Springboot实现推荐系统的协同过滤算法》协同过滤算法是一种在推荐系统中广泛使用的算法,用于预测用户对物品(如商品、电影、音乐等)的偏好,从而实现个性化推荐,下面给大家介绍Springboot... 目录前言基本原理 算法分类 计算方法应用场景 代码实现 前言协同过滤算法(Collaborativ

Python如何精准判断某个进程是否在运行

《Python如何精准判断某个进程是否在运行》这篇文章主要为大家详细介绍了Python如何精准判断某个进程是否在运行,本文为大家整理了3种方法并进行了对比,有需要的小伙伴可以跟随小编一起学习一下... 目录一、为什么需要判断进程是否存在二、方法1:用psutil库(推荐)三、方法2:用os.system调用

Python中判断对象是否为空的方法

《Python中判断对象是否为空的方法》在Python开发中,判断对象是否为“空”是高频操作,但看似简单的需求却暗藏玄机,从None到空容器,从零值到自定义对象的“假值”状态,不同场景下的“空”需要精... 目录一、python中的“空”值体系二、精准判定方法对比三、常见误区解析四、进阶处理技巧五、性能优化

openCV中KNN算法的实现

《openCV中KNN算法的实现》KNN算法是一种简单且常用的分类算法,本文主要介绍了openCV中KNN算法的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录KNN算法流程使用OpenCV实现KNNOpenCV 是一个开源的跨平台计算机视觉库,它提供了各

springboot+dubbo实现时间轮算法

《springboot+dubbo实现时间轮算法》时间轮是一种高效利用线程资源进行批量化调度的算法,本文主要介绍了springboot+dubbo实现时间轮算法,文中通过示例代码介绍的非常详细,对大家... 目录前言一、参数说明二、具体实现1、HashedwheelTimer2、createWheel3、n