永发信息网

谁有“二十四点”游戏的解题方法

答案:1  悬赏:0  手机版
解决时间 2021-04-29 17:20
谁有“二十四点”游戏的解题方法
最佳答案

第一种思路:
把多元运算转化为两元运算,先从四个数中取出两个数进行运算,然后把运算结果和第三个数进行运算,再把结果与第四个数进行运算。在求表达式的过程中,最难处理的就是对括号的处理,而这种思路很好的避免了对括号的处理。基于这种思路有两种算法:


第一种算法:
(1) 将4个整数放入数组中,
(2) 在数组中取两个数字的排列,共有 P(4,2) 种排列。对每一个排列,
(2.1) 对 + - * / 每一个运算符,
(2.1.1) 根据此排列的两个数字和运算符,计算结果,
(2.1.2) 改表数组:将此排列的两个数字从数组中去除掉,将 2.1.1 计算的结果放入数组中,
(2.1.3) 对新的数组,重复步骤 2,
(2.1.4) 恢复数组:将此排列的两个数字加入数组中,将 2.1.1 计算的结果从数组中去除掉。
可以看出,步骤2是一个递归函数。当数组中只剩下一个数字的时候,这就是表达式的最终结果,此时递归结束


第二种算法(此算法思想参考了CSDN(penguinMII)--企鹅的算法思想):
可以寻找所有表达式的规律,得出如下结论:把表达式看成一个函数F(A,B,C,D)=24,可分两种情况F=(((A,B),C),D)和F=((A,B),(C,D)),对其分别计算即可得到答案,算法过程如下:
1)先对第一个数和第二个数进行计算,并保存结果和表达式;
2)对上述结果与第三个数进行计算,并保存结果和表达式;
3)对上述结果与第四个个数进行计算,并保存结果和表达式;
4)判断结果,并输出结果;
5)对第三个数和第四个数进行计算,并保存结果和表达式;
6)对第一个数与第二个数的结果和第三个数与第四个数的结果进行计算,并保存结果和表达式;
7)判断结果,并输出结果;
在这种算法中需要对所有数据进行排列组合,对所有组合进行上述运算过程


第二种思路:
还是尽量避免处理括号,实在是很麻烦。有一种没有括号的表达式——逆波兰表达式(后缀表达式),逆波兰表达式严格地按照从左至右的顺序执行。因此,只需把所有的数字的排列组合与所有的符号的排列组合再进行排列组合即可遍历所有可能的表达式。在输出结果时,只需把逆波兰表达式按照规则还原成正常的表达式即可



说明:'-'和'/'有两种情况,'a-b'用'a-b'表示,'b-a'用'a|b'表示,'a/b'用'a/b'表示,'b/a'用'a\b'表示,'\'是转义字符,要用'\\'表示

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
爱德华的老爸才有演吸血鬼的潜质呢吧???赞
在哪里能看MJ的全部演唱会??
2008 全国卷2分数单科总分
我的佳能相机电池无法充电是怎么回事
E71刷机之后为什么反应变慢了
我的手机是6126c,为什么吗不能安装360手机卫
为什么中国没日本开放
天蠍座是怎麼樣的人
马戏表演团表演什么内容?
盛森地产在哪里啊,我有事要去这个地方
哪些地方有龙岩泡椒鸭爪
都有哪些维生素?
情人节,自己没有钱!不送东东…女朋友不高兴
为什么婚后的女人比较心软?
评价这个女人
推荐资讯
益州宣传兵几级打的过?
月经刚干净就吃阿胶补好吗
读书笔记到底怎麽写?
江西城市学院怎么样(我准备在那上二专)谢啦
谁送我QQ音信种子啊?
山国饮艺茗茶新路店我想知道这个在什么地方
为什么空格键不能用,键盘的空格键的左边的左
无门道在哪里啊,我有事要去这个地方
肚子里有小虫
数不尽,道不明,是离情。唯有泪千行,伴你过
视频录制专家7.5注册码
如果 每个人都讨厌你的朋友你会离开他吗
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?