0%

刷题日记

赛马问题

25 匹马,找出最快的 3 匹,只有 5 个赛道,每次比赛只能得到 5 匹马的速度排序,最少需要多少次比赛

答案是7次。题解

  • 分五组进行小组赛,5 次;
  • 小组头名进行冠军赛,确定第一名,1 次;
  • 最后决出第二三名,1 次

量水

有一个 5L 和一个 3l 的无刻度水杯,还有一个水池。如何量出 4L 水

  • 先接满 5L 的杯子,然后倒入 3L 的杯子,留 2L
  • 然后把 3L 的杯子倒了,把 2L 倒进 3L 杯子里面
  • 然后接 5L 水,最后把 3L 倒满,5L 杯子里面留下 4L

拿球

1001 个球,两个人轮流拿球,且每次只能拿 1、2、4 个球,规定拿到最后一个球的人为输。如果让你先拿,你是否有必胜的把握。如果有,该如何操作?

  • 先拿 4 个,然后每轮保证两个人所拿球数之和为 3 或 6。

送礼物

N 个人,互相交换礼物,每个人不能拿到自己的礼物。设计一种算法

第N个人在[1,N]中随机选择一个数,提前想好。然后前面的人按照这个随机数站好。比如,第一个人,只能傻乎乎站在那里。第二个人,提前在[1,2]这两个数中选一个,比如选1就站在第一个人左边,选2就站在第二个人右边。那第三个人呢,这时候场上已经有两个人了,也就是说有三个空位置,左边,右边和两个人中间。第三个人提前在[1,3]中选择一个数,如果是1就最左边,2就是在前两个人中间,3就是最右边。以此类推,直到第50个人,前面49个人已经站好了,最后一个人就有50个空儿可以插入。当所有人站好后,每个人把自己的礼物给后面那个人。

支持一根棒棒糖!