扑克牌24点游戏的所有组合解决方案,java编程实现

昨天下午写了份作业:求出52张扑克牌所有4张牌组合,算出组合的24点解决方案

先说结果,一共有1820种组合, 这用到了高中的组合知识,分AAAA, AAAK, AA22, A234, AA23,  5种不同情况的分组。 具体可以百度到答案! 


首先,写了个类, 求单个组合的24点解决算式。

1) 根据 4 张点 和 4种运算符, 递归求 合法的逆波兰式, 可将运算的元素存入list, 当满足cardCnt==4 && opCnt == 3 时, 检查此算式的结果。 并且在递归调用中,不得重复添加已经添加到list中的card, 运算符也只能在 cardCnt -  opCnt >= 2 时添加, 否则不是合法的逆波兰式了。

2) 求逆波兰式的结果。很简单,用stack 就可以了。

然后,对1820种组合求解决方法。 算出458种没有解决方法(如果可以有小数的话)。 用整数计算我算的有474种没有解决方法



总结: 让姐姐我重新复习了下高中的排列组合 = =   用时大约4个小时写完。主要浪费在这还有纠结double还是int计算的问题。。。。


递归暴力省脑!!!!!注意循环里有递归时,参数状态的改变和恢复!!!!!!!!!!!!以后玩24点可以直接跑我程序了 = =


  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值