24點遊戲設計

2021-07-30 09:51:20 字數 677 閱讀 3125

24點遊戲設計

問題描述:在數字1-13中隨機生成4個數字,運用加減乘除四則使4個數字的執行結果為24,每個數字僅能使用一次。

演算法設計:實現24點運算有如下兩種演算法。

演算法一窮舉法。所謂窮舉法就是列出4個數字加減乘除的各種可能性。我們可以將表示式分成以下幾種:首先我們將4個數設為a,b,c,d,,將其排序列出四個數的所有排序序列組合(共有a44=24種組合)。再進行符號的排列表示式,其中算術符號有+,—,*,/,(,)。其中有效的表示式有a*(b-c/b),a*b-c*d,等等。列出所有有效的表示式。其中我們用列舉型別將符號定義成數字常量。

演算法二是

把多元運算轉化為兩元運算,先從四個數中取出兩個數進行運算,然後把運算結果和第三個數進行運算,再把結果與第四個數進行運算。在求表示式的過程中,最難處理的就是對括號的處理,而這種思路很好的避免了對括號的處理。

核心**如下:

float compute(char* str)

if(x!=0) valuepush(n,x); //如果x的值不等於 0那麼就進整數棧

else

//將其插入到字元棧中

else

switch(charpop(m)) //優先順序相反,括號裡面的引數變數是字元棧內的首元素

else {cout<<"零不能做除數"<

C語言設計24點遊戲。

24點遊戲 include include include include include include define max 4 最大輸入個數。int k 0 全域性變數 用來判定是否有解 char tp 4 tpt 2000 tptt 2000 tre 2000 用來消除重複。tp 1 3 用...

24點遊戲演算法

24點遊戲演算法 現在我們在做乙個 24點的小遊戲,我主要負責演算法部分,前面有章部落格已經講解了加括號的四則表示式的計算演算法,現在要解決就是24點的演算法。54張牌去掉大小王 2張牌,剩餘 52張。任意發1 k之間的4個 張牌 也就是有 1 13 的四個數字 用 鏈結成算式,使得式子的計算結果為...

24點遊戲演算法

24點遊戲演算法 現在我們在做乙個 24點的小遊戲,我主要負責演算法部分,前面有章部落格已經講解了加括號的四則表示式的計算演算法,現在要解決就是24點的演算法。54張牌去掉大小王 2張牌,剩餘 52張。任意發1 k之間的4個 張牌 也就是有 1 13 的四個數字 用 鏈結成算式,使得式子的計算結果為...