24點

24點

棋牌類益智遊戲,要求四個數字運算結果等於二十四,一起來玩玩吧!這個遊戲用撲克牌更容易來開展。拿一副牌,抽去大小王后(初練也可以把J/Q/K/大小王也拿去),剩下1~10這40張牌(以下用1代替A)。任意抽取4張牌(稱為牌組),用加、減、乘、除(可加括弧,高級玩家也可用乘方開方階乘運算)把牌面上的數算成24。每張牌必須用且只能用一次。如抽出的牌是3、8、8、9,那么算式為(9-8)×8×3=24。

基本介紹

  • 中文名:24點
  • 地區:中國
  • 內容主題:益智,鍛鍊大腦
  • 玩家人數:任意
  • 道具:撲克牌
  • 技巧:3×8=24、4×6=24、12×2=24
簡介,遊戲步驟,算法,

簡介

它始於何年何月已無從考究,但它以自己獨具的數學魅力和豐富的內涵正逐漸被越來越多的人們所接受。這種遊戲方式簡單易學,能健腦益智,是一項極為有益的活動。

遊戲步驟

1.利用3×8=24、4×6=24、12×2=24求解.
把牌面上的四個數想辦法湊成3和8、4和6,再相乘求解.如3、3、6、10可組成(10-6÷3)×3=24等.又如2、3、3、7可組成(7+3-2)×3=24等.實踐證明,這種方法是利用率最大、命中率最高的一種方法.
2.利用0、11的運算特性求解.
如3、4、4、8可組成3×8+4-4=24等.又如4、5、J、K可組成11×(5-4)+13=24等
3.在有解的牌組中,用得最為廣泛的是以下六種解法:(我們用a、b、c、d表示牌面上的四個數)
①(a-b)×(c+d) 如(10-4)×(2+2)=24等. ②(a+b)÷c×d 如(10+2)÷2×4=24等. ③(a-b÷c)×d 如(3-2÷2)×12=24等. ④(a+b-c)×d 如(9+5—2)×2=24等. ⑤a×b+c—d 如11×3+l—10=24等.
⑥(a-b)×c+d 如(4-l)×6+6=24等. 遊戲時,同學們不妨按照上述方法試一試.
需要說明的是:經計算機準確計算,隨機的4個1-13的整數(數字可重複)中,能夠算得24的機率約為74.835%.
“巧算24點”能極大限度地調動眼、腦、手、口、耳多種感官的協調活動,對於培養我們快捷的心算能力和反應能力很有幫助.

算法

利用計算程式來完成這個計算二十四點的程式
方法如下:
首先窮舉的可行性問題。把表達式如下分成三類——
1、 無括弧的簡單表達式。
2、 有一個括弧的簡單表達式。
3、 有兩個括弧的較複雜表達式。
在棧中,元素的插入稱為壓入(push)或入棧,元素的刪除稱為彈出(pop)或退棧。
棧的基本運算有三種,其中包括入棧運算、退棧運算以及讀棧頂元素,這些請參考相關數據結構資料。根據這些基本運算就可以用數組模擬出棧來。
那么作為棧的著名套用,表達式的計算可以有兩種方法。
第一種方法:
首先建立兩個棧,運算元棧OVS和運算符棧OPS。其中,運算元棧用來記憶表達式中的運算元,其棧頂指針為topv,初始時為空,即topv=0;運算符棧用來記憶表達式中的運算符,其棧頂指針為topp,初始時,棧中只有一個表達式結束符,即topp=1,且OPS(1)=‘;’。此處的‘;’即表達式結束符。
然後自左至右的掃描待處理的表達式,並假設當前掃描到的符號為W,根據不同的符號W做如下不同的處理:
1、 若W為運算元
2、 則將W壓入運算元棧OVS
3、 且繼續掃描下一個字元
4、 若W為運算符
5、 則根據運算符的性質做相應的處理:
6、若運算符為左括弧或者運算符的優先權大於運算符棧棧頂的運算符(即OPS(top)),則將運算符W壓入運算符棧OPS,並繼續掃描下一個字元。
7、若運算符W為表達式結束符‘;’且運算符棧棧頂的運算符也為表達式結束符(即OPS(topp)=’;’),則處理過程結束,此時,運算元棧棧頂元素(即OVS(topv))即為表達式的值。
8、若運算符W為右括弧且運算符棧棧頂的運算符為左括弧(即OPS(topp)=’(‘),則將左括弧從運算符棧談出,且繼續掃描下一個符號。
9、若運算符的右不大於運算符棧棧頂的運算符(即OPS(topp)),則從運算元棧OVS中彈出兩個運算元,設先後彈出的運算元為a、b,再從運算符棧OPS中彈出一個運算符,設為+,然後作運算a+b,並將運算結果壓入運算元棧OVS。本次的運算符下次將重新考慮。
第二種方法:
首先對表達式進行線性化,然後將線性表達式轉換成機器指令序列以便進行求值。
那么什麼是表達式的線性化呢?人們所習慣的表達式的表達方法稱為中綴表示。中綴表示的特點是運算符位於運算對象的中間。但這種表示方式,有時必須藉助括弧才能將運算順序表達清楚,而且處理也比較複雜。
1929年,波蘭邏輯學家Lukasiewicz提出一種不用括弧的邏輯符號體系,後來人們稱之為波蘭表示法(Polish notation)。波蘭表達式的特點是運算符位於運算對象的後面,因此稱為後綴表示。在對波蘭表達式進行運算,嚴格按照自左至右的順序進行。下面給出一些表達式及其相應的波蘭表達式。
表達式波蘭表達式
A-B AB-
OK,所謂表達式的線性化是指將中綴表達的表達式轉化為波蘭表達式。對於每一個表達式,利用棧可以把表達式變換成波蘭表達式,也可以利用棧來計算波蘭表達式的值。
至於轉換和計算的過程和第一種方法大同小異,這裡就不再贅述了。
下面給出轉換和計算的具體實現程式——
這樣這個程式基本上就算解決了,回過頭來拿這個程式來算一算文章開始的那個問題。很快就算出來了,原來如此簡單——(6-3)*10-6=24。

相關詞條

熱門詞條

聯絡我們