前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >谁毒死了酋长

谁毒死了酋长

作者头像
春哥大魔王
发布2018-04-17 17:51:58
4580
发布2018-04-17 17:51:58
举报

出题

很久以前有一个大草原上最强的部落,其他部落的首领每年在酋长生日的一天会向他进贡。有一天进贡来了100人,每人送来了一个食物,酋长吃了其中一个食物后,口吐白沫暴毙而亡。

问题

国师希望通过最少的侍卫,最短的时间能够知道是哪一个食物有毒。

解析

每一个算法题都不是凭空来的,比如这道题的解,可以用在我们多线程处理任务的时候,用最少的线程,最短时间内得出结果。

方法

  1. 最简单的是100种食物,100个侍卫,每人试一个,死亡的侍卫的食物就是有毒的食物。

但是这种基本不给分。

  1. 采用分段法,将食物分层N段,M个侍卫进行实验,不断缩小分段数目,得出有毒的食物。

但这种方案在于分段数目越少,耗时越长。

  1. 采用二进制方式,比如100个食物,2^7 > 100,于是我们可以找7个侍卫,标号1-7,每种食物编号用二进制表示,不足7位的位置用0代替。

7个侍卫在食物二进制中1位置的侍卫吃一口,如果能定位到最终死掉侍卫的1的位置,就可以定位食物的编号了。

比如死掉的侍卫是:5,6,7,二进制表示是:0000111,就表示食物编号为7的食物有毒。

© 著作权归作者所有

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-02-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 春哥talk 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 出题
  • 问题
  • 解析
  • 方法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档