C++实现24点游戏的详细步骤
最编程
2024-02-01 12:15:29
...
- 全排列枚举由库函数
next_permutation
来完成枚举 - 64种运算符号搭配由一个整数状压(0—63)来完成枚举
- 加括号方式由后缀表达式来完成,运算对象用0表示,运算符用1表示,由右向左开始,以
(A-(B+C))*D
为例,转成后缀表达式为ABC+-D*
,改成由右向左阅读的顺序,*D-+CBA
,再转成用01标记的二进制数1011000
,为了在代码中便于对运算符和运算对象同时操作,去掉最后一个0,变为101100
,去掉的那个在初始时提前压栈,这样就正好3个0、3个1了,同理,((AB)C)D
->101010
、(AB)(CD)
->110010
、A((BC)D)
->110100
、A(B(CD))
->111000
- 由于运算过程中含有除法,用double又不是我风格,所以写个小结构体表示有理数。包含分子和分母。
- 验证是否有解和打印解分开,更灵活。
上一篇: 玩转24点!用C语言打造简易计算器教程