基础算法----小岛上的和尚们
2019独角兽企业重金招聘Python工程师标准>>>
有这样一道题:
从前,有个小岛上只住着和尚。有些和尚的眼睛是红色的,而另一些的则是褐色。红色眼睛的和尚受到诅咒,如果得知自己的眼睛是红色的,那么当晚12点必须自行了断。(因为受到诅咒,所以只要得知自己的眼睛是红色的,则必须选择自杀,无一例外。)”和尚们之间有一条不成文的规定,彼此不能提起对方眼睛的颜色。小岛上没有一面镜子,也没有可以反射自己容貌的物体。因此,没有任何人能够得知自己眼睛的颜色。出于这些原因,每个和尚都过着幸福的日子,也没有一个和尚自杀。有一天,岛上突然来了一位游客,她对这个秘密并不知情。于是,这位游客对和尚们说:“你们当中,至少有一位的眼睛是红色的。”这位无心的游客当天就离岛而去,而和尚们却因第一次听到有关眼睛颜色的话题而惴惴不安。当晚,小岛上开始出现了可怕的事情,究竟是什么事呢?
先思考几秒钟。
其实这道题不是一道算法题,而更是一个计算机思维考察题。
更多的时候是考察一个程序员在得到一个需求的时候是否能从多个角度去思考,同时挖掘出产品经理给出需求背后有没有他没有想到或者没有表达出来的隐性需求,同时可以全方位考虑这个系统设计出来有没有bug。
解
我们可以假设如果和尚中没有一个红色眼睛的,这个结果会很恐怖,因为所有和尚看到其他和尚都是正常的,所以怀疑只有自己是红色的,所以晚上可能所有的和尚都自杀了。
如果有一个红眼睛和尚,那么死的应该是他,道理同第一条,第一个红眼睛和尚死了之后,第二天就太平了。
如果有两个和尚是红眼睛的,因为所有的和尚都最少看到一个红眼睛和尚,所以都不会自杀,但是第二天晚上,所有和尚都可能会以为红眼睛和尚没有自杀的原因是自己是另外的红眼睛和尚,有可能第二天晚上所有的和尚都自杀,也有可能所有和尚都知道至少一个红眼睛和尚,反而都不会自杀。
。。。其他结果类似推导,但是我们不会通过if/else方式将条件判断硬编码,需要抽离出一个对应配置平台服务。
所以这道题不是一道算法题,而是一道计算机思维题,考察我们能够用计算机角度去帮助产品需求做的更完善。
转载于:https://my.oschina.net/u/1000241/blog/1785968
基础算法----小岛上的和尚们相关推荐
- Pascal 基础算法教案
基础算法教案 目录 第一课 算法简介... 1 第二课 多精度数值处理... 1 第三课 排列与组合... 6 第四课 枚举法... 9 第五课 递归与回溯法... 25 第六课 递推法 ...
- 暑期集训2:ACM基础算法 例2:POJ-2456
2018学校暑期集训第二天--ACM基础算法 例二 -- POJ - 2456 Aggressive cows Farmer John has built a new long barn, wi ...
- 第02期 基础算法(Leetcode)刻意练习开营计划
背景 如果说 Java 是自动档轿车,C 就是手动档吉普.数据结构与算法呢?是变速箱的工作原理.你完全可以不知道变速箱怎样工作,就把自动档的车子从 A 开到 B,而且未必就比懂得的人慢.写程序这件事, ...
- 算法工程师必知必会10大基础算法!
↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:Cricode 博客园 来源:博客园 链接:http://kb. ...
- 【基础算法】算法,从排序学起(一)
本文目录 1.导言 2.谈谈排序 2.1 何为排序?(What is sorting?) 2.2 排序的应用(Why sorting?) 2.3 常见排序算法的种类(How to sort?) 3.基 ...
- 计算机及网络应用基础思维导图_计算机基础/算法/面试题 PDF+思维导图下载
之前为了面试,整理了九大应付面试的思维导图 + 一份 630 页的程序员内功修炼手册 + 一份计算机基础/算法/Java技术栈/Linux C++技术栈的资料.当时我就是靠着这份思维导图以及整理的 P ...
- JavaScript常用基础算法
为什么80%的码农都做不了架构师?>>> 基础算法 一.排序 冒泡排序 //冒泡排序 function bubbleSort(arr) {for(var i = 1, len ...
- CUDA系列学习(五)GPU基础算法: Reduce, Scan, Histogram
喵~不知不觉到了CUDA系列学习第五讲,前几讲中我们主要介绍了基础GPU中的软硬件结构,内存管理,task类型等:这一讲中我们将介绍3个基础的GPU算法:reduce,scan,histogram,它 ...
- 分布式入门:常用的分布式基础算法
摘要: 研究生期间分布式课程的小结吧.... 中间件在分布式系统中的地位和角色 为了使种类各异的计算机和网络都呈现为单个的系统,分布式系统常常通过一个"软件层"组织起来,该层在逻辑 ...
最新文章
- 什么是Sprint?
- python安装教程windows-Python for windows 安装教程
- C#中的var和dynamic
- 作业05之《6种质量属性战术》
- android 联想,民间高手让联想Yoga变安卓平板_联想笔记本电脑_笔记本新闻-中关村在线...
- 牛客16654 谁拿了最多奖学金
- 电子秤连接_电子秤称重仪表故障与维修
- 触发器使用教程和命名规范
- 为什么使用 SLF4J 而不是 Log4J 来做 Java 日志
- 16. Element contentEditable 属性
- 5点击换gif_小米10最酷截图,只需三步,打造视频带壳+GIF动图
- Android的TextView设置padding无效
- php获得opcode,php opcode 缓存
- Qt数据库应用18-横向纵向排版
- Vue2.5从零开发猫眼④——Home页开发
- 腾讯人均月薪7.5w,我这是又被平均了?
- JNLP说明(good)
- 高企申报有哪些项目?
- java steam collect,Java8 Steam 随笔记录
- mysql_check_MySQL中check的用法