你有 4 張寫有 1 到 9 數字的牌。你需要判斷是否能通過 *,/,+,-,(,) 的運算得到 24
1.除法運算子 / 表示實數除法,而不是整數除法。例如 4 / (1 - 2/3) = 12 ;
2. 每個運算子對兩個數進行運算。特別是我們不能用 - 作為一元運算子。例如,[1, 1, 1, 1] 作為輸入時,表示式 -1 - 1 - 1 - 1 是不允許的;
3. 你不能將數字連線在一起。例如,輸入為 [1, 2, 1, 2] 時,不能寫成 12 + 12 ;
只有 4 張牌,且只能執行 4 種操作。即使所有運算子都不進行交換,最多也只有 12 * 6 * 2 * 4 * 4 * 4 = 921612∗6∗2∗4∗4∗4=9216 種可能性,這使得我們可以嘗試所有這些可能。具體來說,我們有 12 種方式先選出兩個數字(有序),並執行 4 種操作之一(12 * 4)。然後,剩下 3 個數字,我們從中選擇 2 個並執行 4 種操作之一(6 * 4)。最後我們剩下兩個數字,並在 2 * 4 種可能之中作出最終選擇。
我們將對我們的數字或結果數字執行 3 次二元運算(+, -, *, / 是運算)。因為 - 和 / 不滿**換律,我們必須仔細考慮 a / b 和 b / a。
對於在我們的列表中移除 a, b 這兩個數字的每一種方法,以及它們可能產生的每種結果,如 a + b、a / b等,我們將採用遞迴的方法解決這個較小的數字列表上的問題
let arr =[4
,1,8
,7];
letjudepoint24
=(arr)
=>
}for
(var n =
0; n<
4; n++)if
(n ==1)
if(n ==2)
if(n ==3)
else}if
(judepoint24
(arr2)
)return
true
; arr2.
splice
(arr2.length -1)
;}}}
}return
false
;}
參考leetcode Python實現24點遊戲
24點遊戲是經典的紙牌益智遊戲。我的思路是把這4個數分成2部分,前兩個數一起,後兩個數一起,先計算除前兩個數所有可能的結果和後兩個數所有可能的結果。最後將它們的結果互相計算,結果與24比較,如果等於24則成功。建立使用者類,整個遊戲的體系就是建立乙個使用者類來儲存使用者的資訊,如姓名,生命值,分數等...
24點問題的程式實現
題目 24點用一筆連起來但只能用橫線和豎線進行連線,最右邊第二行的圓圈處不能用線進行連線 如圖所示 思路 用遞迴實現,設計乙個遞迴函式tf 進行查詢下乙個節點並連線以第一行第一列的點為 1,1 第二行第一列為 2,1 編好每個點的座標,在tf函式中先查詢於自身節點相鄰的且可以連線的點然後進行連線,然...
24點遊戲的java實現
1 計算方式的改變 引入分數計算概念 求24點涉及到除法,所以必須轉變直接計算的思路。經過一段時間的摸索,本人發現可以採用分數計算。任何兩個數的計算都可以轉換成對應的分數計算形式。例如 3 8 可以轉換成 3 1 8 1 1.1 待計算數字的初始化 於是待計算的4個值必須先轉換成分數 private...