跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • [高频题]面试经典题目–24 点游戏
未分類
5 5 月 2021

[高频题]面试经典题目–24 点游戏

[高频题]面试经典题目–24 点游戏

資深大佬 : youthes 0

不得不说,刷题已经和爬山、溜娃一样,成为湾区三俗,基本几个湾区的工程师碰在一起,讨论的话题总跳不出这个圈。爬山,哦不,刷题作为一个贯穿码农整个职业生涯的必须品(就算是我目前呆的微软谷歌这种养老公司也总得跳一跳,毕竟雪花的大包裹是真香啊),几年来基本每天不间断的刷,算是对这一块略有心得。帖子的前半部分想分享一些我作为面试官的常出的一些经典题目,以及题目思路的解析以及一些同类题的归纳,帖子的后半部分我会参考坛友们的留言和拍砖,来决定后面的走向

帖子会长期保持更新,只要是带娃的间隙就会偷偷上来更一下,尽量保持每周两更。

本期我们分享 面试经典题目–24 点游戏

大佬有話說 (7)

  • 主 資深大佬 : youthes

    24 点游戏

    你有 4 张写有 1 到 9 数字的牌。你需要判断是否能通过 *,/,+,-,(,) 的运算得到 24 。

  • 資深大佬 : zuosiruan

    收藏了

  • 資深大佬 : zxCoder

    爆搜

  • 資深大佬 : murmur

    解析呢?我找了半天没看到链接

  • 資深大佬 : cydysm

    看了发帖历史 笑死

  • 主 資深大佬 : youthes

    回溯

    一共有 4 个数和 3 个运算操作,因此可能性非常有限。一共有多少种可能性呢?
    首先从 4 个数字中有序地选出 2 个数字,共有 4×3=12 种选法,并选择加、减、乘、除 4 种运算操作之一,用得到的结果取代选出的 2 个数字,剩下 3 个数字。
    然后在剩下的 3 个数字中有序地选出 2 个数字,共有 3×2=6 种选法,并选择 4 种运算操作之一,用得到的结果取代选出的 2 个数字,剩下 2 个数字。
    最后剩下 2 个数字,有 2 种不同的顺序,并选择 4 种运算操作之一。
    因此,一共有 12×4×6×4×2×4=9216 种不同的可能性。
    可以通过回溯的方法遍历所有不同的可能性。具体做法是,使用一个列表存储目前的全部数字,每次从列表中选出 2 个数字,再选择一种运算操作,用计算得到的结果取代选出的 2 个数字,这样列表中的数字就减少了 1 个。重复上述步骤,直到列表中只剩下 1 个数字,这个数字就是一种可能性的结果,如果结果等于 24,则说明可以通过运算得到 24 。如果所有的可能性的结果都不等于 24,则说明无法通过运算得到 24 。
    实现时,有一些细节需要注意。
    除法运算为实数除法,因此结果为浮点数,列表中存储的数字也都是浮点数。在判断结果是否等于 24 时应考虑精度误差,这道题中,误差小于 10^{-6}可以认为是相等。
    进行除法运算时,除数不能为 0,如果遇到除数为 0 的情况,则这种可能性可以直接排除。由于列表中存储的数字是浮点数,因此判断除数是否为 0 时应考虑精度误差,这道题中,当一个数字的绝对值小于 10^{-6}时,可以认为该数字等于 0 。
    还有一个可以优化的点。
    加法和乘法都满足交换律,因此如果选择的运算操作是加法或乘法,则对于选出的 2 个数字不需要考虑不同的顺序,在遇到第二种顺序时可以不进行运算,直接跳过。

    解题思路
    1.判断 4 个数字是否能得到 24 是比较复杂的,但是两个数字通过四则运算是否能得到 24 就相当容易了,因此解决此问题的关键在于怎样把 4 个数字变成 3 个数字,再变成两个数字。
    2.4->3:从 4 个数字中任取两个(6 种可能)进行四则运算,得到五个值分别与剩下的两个数字组合,得到三个数;
    3.3->2:从 3 个数字中任取两个( 3 种可能)进行四则运算,得到的五个值分别与剩下的一个数字组合,得到两个数;
    4.2->结果:将两个数字进行四则运算,若可以得到 24,返回 true 。

  • 主 資深大佬 : youthes

    感兴趣的可以加我 V 进刷题群 sxxzs3998

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具