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 的四個數字 用 鏈結成算式,使得式子的計算結果為...