美文网首页
100个苹果,如何拿到最后一个

100个苹果,如何拿到最后一个

作者: Bryan0114 | 来源:发表于2019-11-04 10:39 被阅读0次

100个苹果,如何拿到最后一个

去鹅厂参加面试的时候,一道笔试题,当时没有做出来,这里做一下记录和总结。

题面

有一堆苹果,一共100个,由你和另外一个人依次拿,每次拿的数目不小于1个,并且不大于5个,问要如何拿,才能保证你拿到最后一个。

分析

  1. 100个苹果,想要拿到最后一个,说明你倒数第二次拿的数目刚好大于5个,也就是6个,也就是说你要拿到94个苹果中的最后一个;
  2. 接上一步的结果,如何拿到94个苹果中的最后一个,思路是相同的,也就是要拿到88个苹果中的最后一个;
  3. 继续,想要拿到88个苹果的最后一个,就要拿到82个苹果中的最后一个;
  4. 以此类推,每次刚好要剩余6个,100/6=16...4,所以要拿到第4个苹果中的最后一个
  5. 由此可知,应该由你先拿4个苹果,后面根据另一个人拿的数目,保证你们本轮拿到的评估的数目的和为6即可(即是解题的方法)

第1步中可不可以剩7个,答案是不行的,如果剩下7个苹果,那么另一人可以先拿1个,最后剩余6个,你就拿不到最后一个
那如果剩5个呢,那就被另一人一次性都拿走了。
所有重点就是每一轮两个人取走的苹果的数量和一定是6.

结论

应该由你先拿4个苹果,后面根据另一个人拿的数目,保证你们本轮拿到的苹果的数目的和为6即可

思想

从上面的推理过程可以看出,就是使用了一种递归的解题思路,递归是一种非常常见的解题思想,有兴趣的小伙伴可以更详细的了解一下

扩展

  1. 递归思想
  2. 扩展到n个苹果,如何拿到最后一个
  3. 拿的数目改变为最多拿X个,那每轮拿的总和为X+1个即可
  4. 该类题目的最后解答,结果一定是自行可控的,也就是说一定是自己先拿,并拿了确定的数目,接下来才能控制每一轮的总和;如果换成另一个人先拿,那结果便不可控,这一点很重要。

相关文章

  • 100个苹果,如何拿到最后一个

    100个苹果,如何拿到最后一个 去鹅厂参加面试的时候,一道笔试题,当时没有做出来,这里做一下记录和总结。 题面 有...

  • 如何拿到最后一个球

    假设排列着100个乒乓球,由两个人轮流拿球装入口袋,能拿到第100个乒乓球的人为胜利者。 条件是:每次拿球者至少要...

  • 拿苹果问题

    问题:一共有54个苹果,甲与乙拿,一次只能拿1~4个,甲先拿,在下列情况下,问甲如何能赢? 1、拿到最后一个算输 ...

  • 最后一个苹果

    听说今天晚上是平安夜,听说,只是听说而已。 究竟平安夜是怎么回事,没太搞清楚。 听说是洋人的节日传到中国来了,那我...

  • 最后一个苹果

    背包里最后一个苹果居然不翼而飞了! 四天前两个人分食完一个苹果后,仅剩一个苹果被小心翼翼的放在了背包最底层,可昨天...

  • 最后一个苹果

    一天傍晚男人工作回家,路过水果摊买了四个又大又红的苹果,拿回家给妻子孩子吃。 两个女儿看到爸爸带回来苹果开心极了。...

  • 最后一个苹果

    郑重声明:文章系原创首发,文责自负。 如非首发,则相应法律责任由本人承担。 胖子和瘦子是一对好朋友,他们相约一起徒...

  • golang template使用自定义函数

    golang template使用自定义函数 需求来源是这样的:如何拿到一个slice的最后一个元素 在模版里面,...

  • 关于苹果的故事

    如果我妈妈本来说好给我和妹妹各一盒个苹果 但是最后我却没有拿到,只有妹妹拿到了,换作以前的我,肯定会安慰自己,妹妹...

  • 我没有拿到大苹果

    今天遇到一个议题:假设妈妈原本要给我和妹妹一人一个苹果,带去学校吃。第二天,只有妹妹带了一个大苹果,我却什么都没有...

网友评论

      本文标题:100个苹果,如何拿到最后一个

      本文链接:https://www.haomeiwen.com/subject/stbrbctx.html