FreeWheel笔试题

一、推理题

题目描述:100个罪犯站成一纵列,每人头上随机带上黑色或白色的帽子,各人不知道自己帽子的颜色,但是能看见自己前面所有人帽子的颜色。然后从最后一个犯人开始,每人只能用同一种声调和音量说一个字:“黑”或“白”,如果说中了自己帽子的颜色,就存活,说错了就拉出去砍了,说的答案所有犯人都能听见,是否说对,其他犯人不知道,在这之前,所有犯人可以聚在一起商量策略,问如果犯人都足够聪明而且反应足够快,100个人最大存活率是多少?


答案:最后一个人可以看到前面99个人的帽子颜色,99顶帽子必定有一种颜色的帽子是奇数顶,最后一个人只需要说出奇数顶帽子的颜色,那么第99个人通过看前面98个人两种颜色帽子的奇偶性就可以判断出自己头上帽子的颜色。这种方案下前99个人100%存活率,最后一个人50%存活率。


二、编程题

题目描述:给一个数N,列举所有N位二进制的数。要求:1)不能有重复和遗漏的。2)相邻的数只能有一位不同。


思路:不妨用Q(2)表示2位二进制数的情况。列举如下:

00

01

11

10

那么Q(3)的规律是0加上Q(2)的正序,和1加上Q(2)的倒序,列举如下

000

001

011

010

—–

110

111

101

100


基于这个思想可以用递归解决编码问题。

    原文作者:犯罪团伙问题
    原文地址: https://blog.csdn.net/xiaoquantouer/article/details/52826842
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞