Java实现计算24点游戏-源码分享

Java实现计算24点游戏-源码分享

在扑克牌中,我们经常玩的一个游戏是:去掉大小鬼,随机选中4张牌,其分别表示对应的点数,然后通过加减乘除来算出最终结果为24,每张牌必须都要使用且只能使用加减乘除算法。

  • 规则

  1. 可能选中的牌有:A, 2,3,4,5,6,7,8,9,10,J,Q,K, 代表的点数分别为:1,2,3,4,5,6,7,8,9,10,11,12,13.

  2. 只能采用的运算有:+,-,*,/, 且除法必须为整除,可以使用括号(). (当然如果能加上程序设计中的位运算以及异或运算,那就更好玩了)

  3. 每张牌必须都要使用

  4. 最终计算的结果为:24

  • 解决思路

我们知道有4张牌,点数最大是13,最小是1,可以重复。而可执行的运算符有加减乘除,实际上我们可以对这4张牌以及这4中操作做全排列组合,然后每一个求得结果查看是否正确, 这样的话就知道所有满足条件的结果了

  • Java实现

首先,我们要实现一个全排列的类,用来生成全排列组合,我们定义该类为Premutation

Java实现计算24点游戏-源码分享

Ja va基础资料教程免费送  加编程学习“君羊”获取  8819 82657  

然后计算入口方法,该接口中我们定义了三个参数,分别为输入的扑克牌值列表(大小为4),最终的匹配结果(24),以及是否仅仅支持加减乘除

Java实现计算24点游戏-源码分享

最后是计算当前公式的结果并校验方法,用于计算当前的数字组合和操作组合结果是否满足结果值,如果满足,则返回公式,否则返回空

Java实现计算24点游戏-源码分享

最后调用很简单:

Java实现计算24点游戏-源码分享

返回结果为

Java实现计算24点游戏-源码分享

可是当你把point(list,int,boolean)最后的boolean设置为false时,他返回的结果就会很奇怪了,

Java实现计算24点游戏-源码分享

  • 如下是整个class类源码,有很大优化空间(如去重,重复计算等),大家也赶紧试试吧

完整代码请查看地址:https://zhuanlan.zhihu.com/p/25528290

同学们想想,怎么样让这个游戏玩起来更好玩?

关注我吧,每天干活满满哦~~

       

猜你喜欢

转载自blog.csdn.net/ajian6/article/details/89848182
今日推荐