smtctc的专栏

成为大牛的路上....

滴滴2016面试题

现在有10个人被一个魔鬼逮住了。魔鬼对于直接把人杀掉的方法不感兴趣了。于是,他就想了一个杀人的新花样。是这样的,一天晚上,魔鬼向着十个人宣布了游戏规则,即明天早上他要把10个人排成一排,然后从一堆既有无限多的白帽子混着无限多黑帽子的帽子堆为每个人随机抽取一顶帽子,给他们10个人都戴上帽子。因为10个人是排成一排的,所以排在第10个的人可以看到前面9个人帽子的颜色,排在第9个人可以看到前面8个人的帽子的颜色,…以此类推。然后,魔鬼会从排在第10个人开始,问他,你头上的帽子的颜色是白色还是黑色,如果答对了,就放他走;如果答错了,就被杀掉。然后同样问排在第9位的人,然后问排在第8位的人,….以此类推。在这其中,10个人所能做的只有当他被魔鬼问到的时候,答白色或者黑色。不能有超越此范围的任何行动,不然,魔鬼会把它们10个人全部杀死。

现在魔鬼给他们10个人一晚上的时间去商量一个对策,使得他们中能存活下来的人越多越好。请问,你会有什么样的对策,请计算出按照你的对策执行时最坏的情况下,他们中能有多少人能100%够活下来?期望能活下来的人数又是多少?

第十个人说第九个人的颜色,第八个人说第七个人的颜色,这样5个人100%会活。

最好的方法能让9个人100%活,只有最后一个人50%几率活下来。

方法:黑帽子0表示,白帽子1表示,假设他们10个人的帽子是

0 1 1 0 1 1 0 1 0 1

第十个人回答前9个人帽子的1的奇校验结果,1是奇数个就说1,1是偶数个就说0,例子中他说1,第九个人知道了前面8个人有奇数个1,结合第十个人人的结果,他知道自己是0,第八个人知道第九个人是0,他又能看到前面7个有4个1,结合第十个人有奇数个1的结论,他得出自己是1,以此类推。最后前9个人都能活下来。

阅读更多
文章标签: 面试题
个人分类: 数据结构&算法
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

滴滴2016面试题

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭