最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

24點算法設計 - 暴力美學

2019-03-04 22:22 作者:AICDG  | 我要投稿

最近又要到校園招聘的時間了,我也是跟風參與了筆試題的出題。出題過程中,有一道我覺得還不錯的題被刷掉了覺得非??上?,就是這道算24點的題目。既然不出了,我就拿出來分享一下,通過這道題,來幫大家熱熱身(雖然我覺得大家已經(jīng)在狂刷各種OJ了)。

一般思路——動態(tài)規(guī)劃

相信大部分人第一反應都是暴力算法,這很正常,但是無論筆試還是面試,一句暴力算法是什么問題都沒解決的,怎么暴力才是關鍵。回答題目,這個問題如果基礎知識牢固的同學自然有簡單粗暴的辦法,但是沒有的話,你的解法肯定就是回溯法了。

簡述一下24點牌回溯法的思路:

1. 先編寫計算兩張牌計算得到24點的函數(shù)

2. 以1中函數(shù)為基礎,編寫計算三張牌得到24點的函數(shù),((1+1)+1),計算兩次兩張運算

3. 對4張牌進行分組,分成(3 + 1)和(2 + 2)兩種情況,然后開始回溯,(((1+1)+1)+1) or ((1+1)+(1+1)),都是3次兩張運算

整體上這應該是比較簡單而且容易想到的思路了,也和實際玩24點牌時的思路接近。BUT,這個思路有一個巨大問題,就是代碼不好寫,也不太好調(diào)試。一般校招筆試一道題也就30分鐘左右,計算回溯層數(shù)太多的方法在校招中其實非常吃虧。

暴力美學——窮舉法

我之前提了一嘴基礎知識牢固,現(xiàn)在就要說一下了。相信有些同學是想用窮舉法的,但是想了想又算了,因為括號運算符很難表示。但如果你用后綴表達式,那括號無法表示的問題就迎刃而解了。

首先給個最暴力算法吧,加減乘除四則運算需要三個,且有可能同一個運算符需要使用三次(例如 6+6+6+6),四個數(shù)字再加3個運算符進行全排列,窮舉數(shù)量為

當然這是非常復雜的情況,實際上有非常多的優(yōu)化,比如:

后綴表達式的最開始兩位一定都是數(shù)字,所以可能性縮減為

再比如24點可能是三連加,三連乘,但是不會出現(xiàn)三連減,三連除,所以可能性進一步縮減為

還有很多其他的優(yōu)化,就不再列舉了,不過切記一點,這是在筆試,筆試是有時間限制的,因此不要想著做太多簡化而增加自己的代碼量,一切以完成為最優(yōu)先。

后綴表達式看似簡單多了,但是對于平常代碼量不太大的同學來說,還是有難度,寫個后綴表達式求解就有點難度了,比如字符串parse,還有后綴表達式的計算,無論是基于棧還是基于二叉樹,都是有難度的。所以,平常代碼量不太大的同學,還是應該緊張起來的。

提前預祝各位參加校招的同學一切順利。

24點算法設計 - 暴力美學的評論 (共 條)

分享到微博請遵守國家法律
涞源县| 青岛市| 紫云| 闵行区| 洪江市| 昌黎县| 青川县| 三江| 德保县| 屏东县| 上林县| 和静县| 卫辉市| 海伦市| 夏邑县| 水富县| 宁晋县| 万山特区| 多伦县| 桐柏县| 巴中市| 固安县| 淮安市| 梨树县| 密山市| 深水埗区| 安泽县| 通榆县| 白山市| 莱阳市| 濉溪县| 荃湾区| 木兰县| 大洼县| 邢台县| 曲靖市| 枣强县| 延吉市| 随州市| 栾川县| 长海县|