24點遊戲 程式 三

2021-06-04 06:01:15 字數 1484 閱讀 3823

增加了部分去重複的功能,以及字尾轉中綴顯示。

#include #include #include #include #include #include using namespace std;

struct toperdata

;//檢查計算的引數是否合法,也可以用於過濾一些重複的表示式

bool checkjisuan(double a, double b, int op)

//消除重複

bool checkop(toperdata computedata)

else if (type1 == '/' && (type2 == '*' || type2 == '/'))

}return true;

}//求值

double jisuan(double a, double b, int op)

}//計算表示式的值

double process(toperdata data)

else if (data[i].opertype > 0)

else

}else}}

if (suffix.empty()) return -1;

if (suffix.top().opertype == 0)

return -1;

}int op(char x)

//字尾轉中綴

string posttomid(toperdata data)

else

else

opn.pop();

ope.pop();

if (op(ope.top().opertype) != 0 && op(data[i].opertype) > op(ope.top().opertype))

else

ope.pop();

opn.pop();

tmp1 += data[i].opertype;

tmp1 += tmp2;

opn.push(tmp1);

ope.push(data[i]);}}

string result = opn.top();

cout

{cout<

1 1 1 8,(1+1+1)*8

1 1 1 11,(1+1)*(1+11)

1 1 1 12,1*(1+1)*12

1 1 1 13,(1+1)*(13-1)

1 1 2 6,2*(1+1)*6

1 1 2 7,(1+2)*(1+7)

1 1 2 8,1*(1+2)*8

1 1 2 9,(1+2)*(9-1)

1 1 2 10,2*(1+1+10)

大概6s取得單一結果,一共1362個解。

取得全部結果需要14s。其實還是有很多重複。離

的結果還有一定距離。需要更細化的過濾。

這部分暫時不做了。有空還是想做乙個android的24點小遊戲。

24點遊戲 程式 三

增加了部分去重複的功能,以及字尾轉中綴顯示。部分結果 1 1 1 8,1 1 1 8 1 1 1 11,1 1 1 11 1 1 1 12,1 1 1 12 1 1 1 13,1 1 13 1 1 1 2 6,2 1 1 6 1 1 2 7,1 2 1 7 1 1 2 8,1 1 2 8 1 1 2...

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,...