Skip to content

思维训练(智力)题

1. 只有两个无刻度的水桶,一个可以装6L水,一个可以装5L水,如何在桶里装入3L的水

这个问题的本质就是利用两个水桶的已知容量倒来倒去,问题的解法并不唯一。

  1. 先将5L的桶装满,将5L的桶的水倒入6L的桶中。这时5L的桶是空的,6L的桶中有5L的水
  2. 再将5L的桶装满,倒入6L的桶中。这时5L的桶有4L的水,6L的桶是满的
  3. 将6L的桶中的水倒掉,5L的桶的水倒入6L的桶中。这时5L的桶是空的,6L的桶中有4L的水
  4. 将5L的桶装满,倒入6L的桶中。这时5L的桶还有3L的水,6L的桶是满的。

2. 25匹马,5个赛道,每次只能同时有5匹马跑,最少比赛几次选出最快的马?

大概思想就是先分5组跑,跑出每组第一名,将每组第一名放到一起跑,找出25马的第一名,然后再比一次,此时比了六次,找到了第一名,假设是A1。 然后假设如果最后第六次比赛,最后两名是D1和E1。那么前三不可能出现在D和E组内。 同时,A组的最后两名A4、A5由于比A1,A2,A3慢,也不可能成为前三。 故A组,至多再挑除A1外的前两名A2、A3。 也可能A2、A3都进不去前三。这种情况下,B组至多可能B1、B2成为二、三名。 由于A1是冠军,比A1速度稍慢的是A2和B1,亚军只可能在他们两个之中产生。 如果季军不在前两组,那么也仅C1有资格再进行一场比赛了,因为它仅输过A1、B1。

假设最终名次也是按照字母顺序,即A1名次最高,E1名次最低。D组和E组全部淘汰。A1也是25匹马中的第一,接下来需要选出第二名和第三名。

由于A1是冠军,比A1速度稍慢的是A2和B1,亚军只可能在他们两个之中产生。 假设A2是亚军,那么季军需要在A3、B1中选择。 假设B1是亚军,那么季军需要在A2、B2、C1中选择。

综上,只需要A2、A3、B1、B2、C1再比赛一场即可。

3. 1000瓶药水里面只有1瓶是有毒的,毒发时间为24个小时,问需要多少只老鼠才能在24小时后试出那瓶有毒

这个问题不太容易想到可以先记住答案,需要老鼠的数量为log_2 1000

为了简化问题,可以先假设有只有8瓶药水,其中有一瓶有毒,根据公式需要 log_2 8=3个老鼠 先将瓶子进行编号为0-7号,用位数表示老鼠 有毒

  1. 将4、5、6、7号药水混合到一起喂给老鼠1,将2,3,6,7号药水混合喂给老鼠2,将1、3、5、7药水混合喂给老鼠3,观察老鼠是否中毒。

  2. 中毒的老鼠标号为1,未中毒的老鼠标号为0,将三只老鼠标号组合到一起即为有毒药水的标号。

  3. 例如,老鼠1中毒,老鼠2未中毒,老鼠3中毒。那么三只老鼠的二进制表示为101,即5号药水有毒。因为老鼠1中毒,说明4、5、6、7号药水中含有毒的药水。老鼠2未中毒,说明2、3、6、7无毒。老鼠3中毒,说明1、3、5、7中有一瓶有毒。所以有毒的为5号药水

  4. 其实和直接将二进制转化为十进制的结果是一样的。 回到正题,如果有1000瓶药水,则需要10只老鼠,因为10位二进制足以表示0-999。

4. 家里有两个孩子,一个是女孩,另一个也是女孩的概率是多少?

这是一个概率问题,答案是三分之一。 其实根据不同理解,1/2、1/3、1/4都可以解释,更像是一个语言理解题。

题目多少有些歧义,面试时说清楚就行了。 已知家里有两个孩子A和B,其中一个是女孩,关键问题就在其中一个是女陔这句话上。 如果你理解为这个是指定了一个孩子为女孩,例如A为女孩,那么B也是女孩的概率显然为二分之一。 如果你理解为A或B有一个孩子是女孩,问另一个孩子也是女陔的概率,这就是三分之一了。因为两个孩子的性别只有男男、男女、女男、女女四种组合,男男被排除了,剩下三种组合均符合题意,所以是三分之一。 其实,题目本身应该是第二种理解的意思,告诉你了有一个是女孩并未明确说哪个是。但很多人看到题目就会先入为主,先指定了一个孩子为女孩,那另一个孩子为女孩的概率肯定是二分之一了,这是不正确的

5. 烧一根不均匀的绳,从头烧到尾总共需要1个小时。现在有若干条材质相同的绳子,问如何用烧绳的方法来计时一个小时十五分钟呢?

这个问题的关键就是要知道绳子可以从两头烧

  1. 将绳子1从一段开始烧,同时将绳子2从两端烧,
  2. 绳子2在半小时后烧完。 这时开始计时,将绳子1的另一端点燃,从计时开始绳子1烧完后是15分钟,
  3. 然后点燃绳子3的一端,绳子3烧完需要一个小时。加上刚才的15分钟正好是1小时15分钟

6. 一共12个一样的小球, 其中只有一个重量与其它不一样(未知轻重),给你一个天平,找出那个不同重量的球?

这个问题的思想是采用分治的思想。

将12个小球分为三组(因为分成两组不能找到重量不一样的球在哪组),为A组、B组、C组 将三组球分别两两称重,找到重量和另外两组不同的那一组(只要有两组可以使天平平衡,重量不一致的球必然在第三组)。假设坏的球在C组 将C组的球分成两组C1和C2,每组两个球,这时从A组和B组里找到两个正常的球,分别和C1和C2去称,天平不能平衡说明重量不一致的球就在哪组。假设在C1 将C1组的球分别和正常的球去称,天平不平衡时就能找到重量与其他不一致的球。

7. 有10瓶药,每瓶有10粒药,其中有一瓶是变质的。好药每颗重1克,变质的药每颗比好药重0.1克。问怎样用天平称一次找出变质的那瓶药?

  1. 将这10瓶药标好号1-10。
  2. 然后按照瓶子的标号取药,1号药瓶取1粒药,2号药瓶取2粒药,3号药瓶取3例药,以此类推,取完10瓶药一起放到天平上去称。如果没有变质的药,重量应该是55克,这时多出几克,几号药瓶就是变质的。例如55.3克,那么变质的药就是3号药瓶的

8. 你有两个罐子,50个红色弹球,50个蓝色弹球,如何将这100个球放入到两个罐子,随机选出一个罐子取出的球为红球的概率最大?

这个问题应该是这几道题中最简单的了,将一个红球放到一个罐子中,另一个罐子放49个红球和50个蓝球,这样随便选出一个罐子取出红球的概率是1/2 * 1 + 1/2 * 49 /(49+50),接近0.75。

9.你现在有一根金条,有一个工人为你工作了七天,他们的工资是金条的七分之一,并且需要当天结清,你只能对金条切割两次,请问需要怎么做

这个问题和平时用的纸币金额是一个道理,将一根金条切割两次可以得到三根金条,这三根金条必须可以组合出1-7之间的任意金额。

将金条分两次切成长度为1、2、4的金条即可。 第一天,将长度为1的金条支付给工人。 第二天,将长度为2的金条支付给工人,工人将长度为1的金条还给你。 第三天,将长度为1的金条支付给工人 第四天,将长度为4的金条支付给工人,工人将长度为1,2的金条还给你 第五天,将长度为1的金条支付给工人 第六天,将长度为2的金条支付给工人,工人将长度为1的金条还给你 第七天,将长度为1的金条支付给工人

10. 有三个酒杯,其中两个大酒杯每个可以装8两酒,一个可以装3两酒。现在两个大酒杯都装满了酒,只用这三个杯子怎么把酒平均的分给4个人喝?

这个问题就是用杯子倒来倒去,一共16两酒分给四个人,最后每个人都喝四两酒即可

用三个数字表示三个杯子,最开始为880,即两个8两的杯子是满的,一个3两的杯子是空的。

  1. 880—>853,这时A喝掉第三个杯子的三两酒变成850
  2. 850—>823,这时B喝掉第二个杯子的二两变酒成803
  3. 803—>830—>533—>560—>263—>281,A喝掉第三个杯子的一两酒变成280(A喝完了4两)
  4. 280—>253—>550—>523—>820—>703—>730—>433—>460—>163—>181,这时C和D各喝一两酒变成080
  5. 080—>053—>350—>323,这时B喝点第二个杯子的二两酒,C和D各喝三两酒,到此所有人都喝了四两酒

11.在地球什么地方能够,往南走1公里,然后往东走1公里,再往北走1公里能回到原点?

这个问题的本质就是往北走一公里和往南走一公里正好抵消,往东走一公里要回到原点。一共是两个答案。 我们只需要找到在哪里往东走一公里会回到原点呢?这样的点在地球上有无数个,主要集中在两个地方,即北极点附近和南极点附近。有一个周长为一公里的圆,圆心在北极点和南极点的连线上,只要站在这个圆上的任意一个点,向东或向西走一公里都会回到原点。

  1. 这个点是距离南极1 + 1 / (2 * pi)的点,假设这个点为A点,先向南走一公里到达B点,向东走一公里还是B点(相当于绕了一圈),再向北走一公里回到A点。这时是假设这个圆的圆心就是南极点,圆的半径就是1 /(2 * pi),因为地球非常大,这个圆的周长又只有一公里,这么假设是可以的。

原点

这时又有人说了,这个B点所在的圆还可以小一点,即一公里是这个圆的周长的整数倍,这样也是可以的,向东走一公里相当于绕了很多圈还是回到了原点。

所以答案是距离南极点1+1/(2 * pi * k)的点,都是可以的,k为正整数。 南极

  1. 还有一个答案就是北极点,很好理解,在北极点先向南走一公里,在向东走一公里,这时距离北极点还是一公里,在向北走一公里就回到北极点了。

12. 50名运动员按顺序排成一排,教练下令:“单数运动员出列!”剩下的运动员重新排列编号,教练又下令:“单数运动员出列!”如此下去,最后只剩下一个人,他是最开始的几号运动员?

这个问题不难,很容易就可以想到,先正着推,在逆着推就可以了

正向思维: 运动员编号为1-50,单号出列后为2,4,6,……,50 运动员重新编号为1-25,单号出列后为2,4,6,……,24 运动员重新编号为1-12,单号出列后为2,4,6,……,12 运动员重新编号为1-6,单号出列后为2,4,6 运动员重新编号为1-3,单号出列后为2

反向思维: 第五轮运动员的编号为2 第五轮编号为2的运动员在第四轮编号为4 第四轮编号为4的运动员在第三轮中编号为8 第三轮编号为8的运动员在第二轮中编号为16 第二轮编号为16的运动员在第一轮中编号为32 所以,剩下的最后一名运动员在开始的编号为32

13. 连续正整数之和为1000 的共有几组?

这是一道比较偏数学的题目

假设开始的数为m,从m加到n等于1000, 根据等差求和公式得(m+n)(n-m+1)/2=1000,(m+n)(n-m+1)=2000, m和n分别不论为奇数还是偶数,(m+n)(n-m+1)总为1奇1偶的乘积。 即2000为一个奇数和一个偶数的乘积,同时拆分成质数的乘积为, 2000=2 * 2 * 2 * 2 * 5 * 5 * 5

下面分情况讨论

  1. 当奇数为1时,m+n=2000,n-m+1=1,得m=1000,n=1000
  2. 当奇数为5时,m+n=400,n-m+1=5,得m=197,n=203
  3. 当奇数为25时,m+n=80,n-m+1=25,得m=27,n=53
  4. 当奇数为125时,m+n=125,n-m+1=16,得m=54,n=71 综上,有四组。

14. 49个人中至少几个人生日是同一月?

一年有12个月,那么49个人最后至少有49/12 约等于 4个人 出生月份相同

15.一枚正反概率不一样的硬币,如何当一枚正常的硬币来用(正反概率相同)?

答案是连续抛两次即可,第一次为正面、第二次为反面和第一次为反面、第二次为正面得概率相同。

16.1楼到n楼的每层电梯门口都放着一颗钻石,钻石大小不一。你乘坐电梯从1楼到n楼,每层楼电梯门都会打开一次,只能拿一次钻石,问怎样才能拿到「最大」的一颗?

这是一个非常有意思且非常高频的面试题,大概意思就是先观察几层电梯的钻石大小,记住最大的钻石大小,后面几层一旦出现比前几层钻石都大的钻石就直接拿了,这样其实也不能保证可以拿到最大的一颗,但却是一个最优解了。

这个问题的原型叫秘书问题,可以在维基百科上查到,在机率及赛局理论上,秘书问题(Secretary problem),类似的名称有相亲问题、止步问题、见好就收问题、苏丹的嫁妆问题、挑剔的求婚者问题等,属于最佳停止问题。内容是这样的:要聘请一名秘书,有 n 个应聘者。每次面试一人,面试后就要及时决定是否聘他,如果当时决定不聘他,他便不会回来。面试后总能清楚了解应聘者的合适程度,并能和之前的每个人做比较。问什么样的策略,才使最佳人选被选中的概率最大。

电梯

17. 一副牌除去大小王还有52张,其中10张牌是正面朝上的,要求一个盲人将牌分成两堆,并且每堆牌正面朝上的数量相同,可以任意翻动每张牌,应该怎么分

这个问题不算复杂,看过一遍就能记住答案。分成两堆,一堆10张,一堆42张,并且将第一堆的10张牌全部反转,这时两堆牌中正面朝上的数量是相同的。

18. 两人玩游戏,在脑门上贴数字(正整数>=1),只看见对方的,看不见自己的,而且两人的数字相差1,以下是两人的对话:A:我不知道,B:我也不知道,A:我知道了,B:我也知道了,问A头上的字是多少,B头上的字是多少?

这个问题关键是数字是大于等于1的数字,只有对方脑门上贴的是1,才能一次猜出自己的数字,所以1这个数字很关键,不是在对方脑门上,就是自己脑门上的两个可能数字之一,这个条件是必须要用上的。 相差1也很关键,仅知道相差1,然后看到对面的就知道自己的,说明有一个边界被排除了,而这个边界只可能是题目给的1这个下边界。应为都知道对方和自己不是1。从而得出不是2就是3。 而根据第二次问答的先后顺序又可以知道谁是2,谁是3。因为先回答的人一定是看到对方是2,结合自己不是1,得出自己是3。 而后回答的根据对方能确定推出自己是3,从而后知道自己是2。

第一轮:A说不知道,B也说不知道,说明两个人脑门上都没有数字1。每个人脑门上的数字都有两种可能。

第二轮:A说知道了,B也说知道了,说明B说不知道给A排除了一个可能,只有数字1才有可能被排除,A才有可能猜出自己脑门上的数字,所以A脑门的数字是3。 B听到A说知道了,说明自己说不知道给A排除了一个答案,排除的答案只能是1,A才能猜出,既然排除的是1,A只能是3,那么B脑门的数字则只能是2。

19. 在一个飞机场有N架飞机,每架飞机只有一个油箱,每箱油可以使飞机绕地球飞半圈。如果使一架飞机绕地球一圈,至少需要出动多少飞机?(要求所有飞机均能安全返回到机场,只能通过飞机给飞机这样加油方式,不能降落到机场加油)

这个问题的思路是先将路程分为前半程和后半程,这样需要出动飞机会少些

具体细节可以看这个图 加油

前半程:

  1. 假设整个路程为1,A、B、C三架飞机同时起飞,
  2. 在1/8处,三架飞机的油量都剩了3/4,其中飞机C给另外飞机A、B加满油,自己还剩1/4,刚好够返航到机场。
  3. 到2/8处,A、B两架飞机的油量都剩了3/4,其飞机B给飞机A加满油后,自己还剩2/4,刚好能够返航。
  4. 此时飞机A飞到6/8处时,油量为0。

后半程:

  1. D、E、F三架飞机同时反方向起飞,
  2. 在7/8处,三架飞机的油量还剩了3/4,飞机F给飞机D、E加满后返航,
  3. D、E两架飞机在6/8处碰到飞机A,此时飞机A油量为0,D、E两架飞机的油量为3/4,分别给飞机A加1/4的油量。
  4. 这时A、D、E飞机油量都是2/4,刚好够返航。

总结一下,几个加油的节点,分别在1/8,2/8,7/8,6/8处。共出动6架飞机。

20. 晚上有四个人需要过桥,但是只有一个手电筒,并且桥一次最多两个人,每个人通过桥所需的时间也不同,A、B、C、D过桥所需的时间分别为1、2、5、10分钟。请问如何过桥所需时间最短?

这个问题最开始想到的可能是让速度最快的人分别送其他三个人过去,因为他回来所需的时间最短。其实不是这样的,最佳的解决方案是将两个耗时最多的人一起过桥,而不是分开过桥,并且不需要返回。

  1. 第一次过桥:A和B一起过,需要2分钟,A再回来,所需1分钟,一共所需3分钟
  2. 第二次过桥: C和D一起过桥,需要10分钟,B再回来,所需2分钟,一共需12分钟
  3. 第三次过桥:A和B一起过桥,所需2分钟

一共所需17分钟。

21. 一个人8块钱买了一只鸡,9块钱卖了,10块钱又买回来了,11块钱又卖了,请问他挣了多少钱?

2块钱

22. 一共有N颗石子,每次最多取M颗最少取1颗,A,B轮流取(A先),谁最后拿完石子谁就获胜,请问最后谁会获胜?

这种没有具体的数字就要分类讨论下了

假设M>=N,那么A一次就把石子拿完了,A胜 假设M<N,如果N可以被(M+1)整除时,A失败,如果N不可以被(M+1)整除时,A胜

具体分析:

  1. 如果N可以被(M+1)整除时,无论A怎么拿,B只要保持拿完石子的数量为(M+1)的倍数,到最后只能剩下(M+1)个,A无论怎么拿,B下次都能一次拿完。
  2. 如果N不可以被(M+1)整除时,A可以保证自己拿完剩下的石子数量一定是(M+1)倍,同理,A胜。

23. 海盗分金币问题:5个海盗抢到了100枚金币,他们的分配方案,先抽签决定自己的发言顺序。1号提出的方案,由5个人进行投票表决,如果半数人以上同意(不包括半数),就按他的方案分配,否则扔进海里喂鱼。如果1号被喂鱼,由2号发言,提出的方案由4个人进行投票表决,规则同上。如果2号被喂鱼,以此类推。1号海盗提出什么样的方法才能使得自己分到最多的金币

这个题的思路主要是逆推法

  • 从最后面开始,如果前三个人都被喂鱼了,只剩4号和5号,那么无论4号说什么,5号都会反对,4号一定会被喂鱼,5号独吞100枚金币。所以3号无论说什么,4号只能同意。

  • 3号知道这些,会提出“100,0,0”这种分配方案,4号海盗为了活命只能赞同,加上自己一票即可使得投票通过半数。

  • 2号知道这些,会提出“98,0,1,1”的分配方案,以此拉拢4号和5号

  • 1号知道这些,他还需要两个人支持他,2号是不可能的,3号只需1枚金币,4号或者5号其中一人即可,所以1号的分配方案是“97,0,1,2,0”或者“97,0,1,0,2”

拓展:如果题目改成投票半数人同意即可,又会怎样分配呢?

24. 高层扔鸡蛋问题:有一个100层的高楼,给你两个鸡蛋,需要测试出在哪层楼扔鸡蛋,鸡蛋不会碎。鸡蛋如果没有碎可以扔无数次。最少需要扔多少次?

这是一个非常经典的动态规划问题,手撕代码时也很常见

如果是只有1个鸡蛋,这个问题就很简单了,为保证一定找到这个楼层,只能从第一层开始试。

题目中是两个鸡蛋,正常就是会想到二分法之类,先在50层扔一个,没碎,捡回来在75层扔,碎了,第二个鸡蛋只能从第1层开始试了。 第一个鸡蛋用来缩短范围,第二个鸡蛋用来遍历范围。

假设需要x次才能找到临界的楼层,也就是说第一个鸡蛋从第x层扔出(因为需要考虑最差情况,万一第一个鸡蛋碎了,为保证x次能找到,第一个鸡蛋需要从x层扔出。因为如果鸡蛋恰好在第x层碎了,在第x-1层没碎,第一个鸡蛋在x层以上的楼层扔的话,第二个鸡蛋需要遍历x次,一共需要x+1次) 如果第一个鸡蛋碎了,第二个鸡蛋遍历1至x-1层,则需要x次找到。 如果第一个鸡蛋没碎,则第一个鸡蛋的任务是需要继续缩小范围,还是为了保持这个x次能找到临界楼层的条件,现在只剩x-1次了,下一次只能在x+x-1层扔第一个鸡蛋,以此类推,x+(x-1)+(x-2)+……+1>=100,x=14 也就是说最少需要扔14次。

这个问题还有一些变种问题,比如2个鸡蛋,n层楼;k个鸡蛋,n层楼(力扣887题,大家感兴趣可以看看)