欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

几个有意思的题目

程序员文章站 2024-03-12 20:28:32
...

题目一

有三个白人被一个印第安反对部落俘虏了。部落的首领愿意把他们放了,所以他把他们领到一个没有亮光的帐篷里。他给了每人一条头巾(他有三条头巾,三白二红-所以有两条是没用到的)。然后他们排着队出去,这样,每个人都可以看到前面人的头巾颜色,但是看不到自已头巾的颜色(第一个走出去的人看不到任何头巾,第二个人可以看到第一个人的头巾,第三个人可以看到前面两个人的头巾)。如果有其中一个人说出了自己头巾的颜色,那所有人的可以被放了。几分钟的沉默后,其中一个人说:“我头巾的颜色是。。。”。

附加条件:

  1. 你可以设想所有的囚犯都是聪明的,而且他们对同伴的智慧也很有信心。
  2. 他们猜错了一次就会被监禁。
  3. 所有人加起来只能猜一次。
  4. 所有人都想被释放。

题目二

两国交战,一方抓到10个战俘,决定用以下方式判定他们的生死: 10人排成一列,每人戴上一顶或红或蓝的帽子,每个人都只能看到自己前面的人.然后从后往前,猜自己帽子的颜色,对的放走,错的枪毙. 战俘们经过讨论,决定团结一致,力求更多人存活.问:最多能保证多少人幸存?

题目三

一个游戏,有四个棋子(棋子两面一面是黑色一面是白色),放在可以旋转的桌子上四个角,任意初始状态,一次可以翻一个或多个棋,一旦桌子上棋子全黑或全白,游戏结束。蒙着眼睛翻棋子,每翻一次,桌子会旋转90度的倍数,问,最坏多少次能结束游戏

例如:初始状态四个棋子为:

1 0
0 1

只需要一次,翻任对角两个即可终止游戏

题目四

两个鸡蛋,100层楼,设计方案,最小最坏情况需要多少次可以判断鸡蛋从多少层楼摔下来摔不破?





题目一

粗看,一下子看不出什么结果来,需要细细分析。

三个人,帽子三白两红,每个人可以看到前面人的帽子颜色,而且是经过一段时间后才出来的结果。

假设一,假设前两个人是红色,第三个人会立马说出结果,只有白色,所以前面两个人不可能同时为红色。

假设二,第一个是红色,有假设一得知,第二个人在第三个人确定不了的时候,只能为白色,会立马说出结果。

假设三,第一个人是白色,经过一段时间,说明第二、三个人确定不了自己的颜色,自己只能是白色,假设成立。

所以结果是第一个人说出自己的头巾是白色

题目二

先联想一下,每个人两个颜色,一共10个人,估计一下结果集,2^10,1024个排列组合,然后需要根据每个人的话,猜出这个数字是多少,想到了什么,二分查找?

再联想一下,这是一串网络中传输的byte流,怎么校验数据是否丢失?

恩,奇偶校验码,最后一位表示byte流中1的个数,回到问题,最后一个人能看到前面所有人的帽子,就说前面奇数个帽子的颜色是什么就可以了。期望9.5个人存活。

例如前面4个红帽子,5个白帽子,第十个猜白色,第九个人根据第十个人的话和前面八个人的帽子的颜色,可以判断自己的颜色,以此类推。。。

题目三

三类有效初始状态:

A. 
1 0
0 0
B.
1 1
0 0
C.
1 0
0 1

三种有效翻法:

1.
翻一个
2.
翻相领两个
3.
翻对角两个

初始状态经过翻法之后到达的状态表:

初始状态 翻法1 翻法2 翻法3
A B、C、终止 A A
B A C、终止 B
C A B 终止

最坏情况: 初始状态为A,翻法3一次,排除C、翻法2、3一次,排除B,翻法1、3、2、3,结束游戏,最多需要7次即可结束游戏

题目四

  1. 二分不可取,鸡蛋第一次碎了,第二个鸡蛋需要从区间开头挨个试,第一次碎了,第二次需要尝试48次。
  2. 均分不可取,100层楼,分10份,最坏需要17次
  3. 考虑第一次没碎,第二次减少一次尝试,即有以下不等式:

x + (x-1) + (x-2) + ... + 1 >= 100

解得:x>=14

尝试方案:14、27、39...,这种设计方法,最坏14次

转载于:https://my.oschina.net/serverx/blog/661236