求解二十四点的所有解 C++版 您所在的位置:网站首页 厦航737-800座位49A 求解二十四点的所有解 C++版

求解二十四点的所有解 C++版

2024-06-12 18:15| 来源: 网络整理| 查看: 265

文章作者:姜南(Slyar) 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。

24点游戏是一种使用扑克牌来进行的益智类游戏,游戏内容是:从一副扑克牌中抽去大小王剩下52张,任意抽取4张牌,把牌面上的数(A代表1)运用加、减、乘、除和括号等进行运算得出24。每张牌都必须使用一次,但不能重复使用。

简单说就是给你4个数(1-13),数字可以重复,然后让你运用加、减、乘、除和括号运算得出24,每个数字必须使用一次,但不能重复使用。当然,运算中出现的分数是允许的,如1 5 5 5和3 3 8 8这两组数字得到的24点表达式为((5-(1/5))*5) 和 (8/(3-(8/3))),是不是很变态?

因为表达式是字符串,所以这次我没有用C语言实现,而是选择了具有string类型的C++语言,这样可以更好地处理字符串。在代码中我还使用了STL的Vector来过滤掉重复的解,感叹STL的方便之余对迭代器的使用也有了更深的认识。

至于24点求解的算法,仔细研究一下24点解集,可以发现解的形式无非就是2种。一种是(((A,B),C),D),另一种是((A,B),(C,D))。有了这个发现,就可以在很大程度上避免对于括号的处理,接下来的工作就是...枚举,哈哈。

花了3个多小时敲代码,注释我写得很清晰了,测试了很多组数据,目前没有发现bug,下面是代码。

C 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235 /*Slyar2009.10.31*/ #include   #include #include #include #include #include  using namespace std; /* 存放解集 */vector ivec; /* 第1个数和第2个数的值及表达式 */double key1_2[6] = {0};string exp1_2[6]; /* 第3个数和第4个数的值及表达式 */double key3_4[6] = {0};string exp3_4[6]; /* 第3个数和前2个数的值及表达式 */double key12_3[6] = {0};string exp12_3[6]; /* 第4个数和前3个数的值及表达式 */double key123_4[6] = {0};string exp123_4[6]; /* 前2个数和后2个数的值及表达式 */double key12_34[6] = {0};string exp12_34[6]; /* 函数声明 */int Permutation(int[], int[][4]);void Calc(double, double, double[], string[], string, string);void Work(int[], int[][4], int); /* 主函数 */int main(){    int num[4] = {0};    int array[24][4] = {0};    int count = 0;        cout


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有