題目描述
24點遊戲是乙個非常有意思的遊戲,很流行,玩法很簡單:給你4張牌,每張牌上有數字(其中a代表1,j代表11,q代表12,k代表13),你可以利用數學中的加、減、乘、除以及括號想辦法得到24,例如:
((a* k)-j) * q等價於((1 * 13)-11) * 12=24
加減乘不用多說了,但除法必須滿足能整除才能除!這樣有一些是得不到24點的,所以這裡只要求求出不超過24的最大值。
輸入
輸入第一行n(1<=n<=5)表示有n組測試資料。每組測試資料輸入4行,每行乙個整數(1到13)表示牌值。
輸出
每組測試資料輸出乙個整數,表示所能得到的最大的不超過24的值。
樣例輸入33
3331
11112
5131樣例輸出244
21題目主要講的是給n組資料,求他們小於等於24的最大組合(就是單純的二十四點)。
搞清楚題目大意,我們就把問題簡化一下:
全排列+挨個列舉。
o(44 * 53 *5)
實際上可能更長,所以這不是重點。
把這個二十四點轉換成四個數和並成一數,每次合併把兩個數合成乙個數,和並分五種來列舉:
設合併的兩數為i,j。
i+ji-j
j-i(別忘了這個)
i*ji%j=0就i/j j%i=0就j/i(注意除數不能等於0)
合併的方法:
i=1~
3j=i~4if
(a[i]和a[j]有任意乙個以前合併過就不進行合併)
合併3次後就判斷,因為合併方法,所以最後的答案一定在a[1] (可以自己想想)。
然後就好了。
python資料分析與挖掘
24點遊戲演算法
24點遊戲演算法 現在我們在做乙個 24點的小遊戲,我主要負責演算法部分,前面有章部落格已經講解了加括號的四則表示式的計算演算法,現在要解決就是24點的演算法。54張牌去掉大小王 2張牌,剩餘 52張。任意發1 k之間的4個 張牌 也就是有 1 13 的四個數字 用 鏈結成算式,使得式子的計算結果為...
24點遊戲設計
24點遊戲設計 問題描述 在數字1 13中隨機生成4個數字,運用加減乘除四則使4個數字的執行結果為24,每個數字僅能使用一次。演算法設計 實現24點運算有如下兩種演算法。演算法一窮舉法。所謂窮舉法就是列出4個數字加減乘除的各種可能性。我們可以將表示式分成以下幾種 首先我們將4個數設為a,b,c,d,...
24點遊戲演算法
24點遊戲演算法 現在我們在做乙個 24點的小遊戲,我主要負責演算法部分,前面有章部落格已經講解了加括號的四則表示式的計算演算法,現在要解決就是24點的演算法。54張牌去掉大小王 2張牌,剩餘 52張。任意發1 k之間的4個 張牌 也就是有 1 13 的四個數字 用 鏈結成算式,使得式子的計算結果為...