目录
题目
24点游戏是经典的纸牌益智游戏。
常见游戏规则:
从扑克中每次取出4张牌。使用加减乘除,第一个能得出24者为赢。(其中,J代表11,Q代表12,K代表13,A代表1),按照要求编程解决24点游戏。
基本要求: 随机生成4个代表扑克牌牌面的数字字母,程序自动列出所有可能算出24的表达式。
分析
- 首先生成四个随机数(1~13之间)
- 进行结果为24的表达式计算
第一步:计算出四个随机数的排列组合
第二步:每一组数字去进行排列组合,找到等于24的表达式
具体的思想是:使用三层循环控制运算的优先级,也就是括号的存放位置
第一次:将四个数字的其中两个数字进行运算,得到三个数字,存入长度为3的数组temp1之中(第一个括号的位置)
第二次:将三个数字的其中两个数字再次进行运算,得到两个数字,存入长度为2的数组temp2之中(第二个括号的位置)
第三次:将最后的两个数字进行运算,得出最终的结果,sum
3.计算所有表达式的数量(总共有四种情况)
第一种:当四张卡牌的数字完全相同,那么组合方式只有一种
第二种:当四张卡牌的数字有两个相同,其余不同,那么它的组合方式有96种
第三种:当四张卡牌的数字全都不同,那么就有256种
第四种:当四张卡牌两两相同,那么就有36种情况
第五种:当四张卡牌种三张相同,那么就有16种情况
代码实现
randomNumber:存放四个随机数
getExpression():拿到所有结果为24的表达式
scard:数字double化,方便后面的运算