24点计算问题的计算方法是什么
- 游戏信息
- 发布时间:2025-06-21 01:53:31
(4-4÷7)x7=24。
24点
棋牌类益智游戏,要求四个数字运算结果等于二十四。这个游戏用扑克牌更容易来开展。
拿一副牌,抽去大小王后(初练也可以把J/Q/K/大小王也拿去),剩下1~10这40张牌(以下用1代替A)。任意抽取4张牌(称为牌组),用加、减、乘、除(可加括号,高级玩家也可用乘方开方与阶乘运算)把牌面上的数算成24。每张牌必须用且只能用一次。如抽出的牌是3、8、8、9,那么算式为(9-8)×8×3=24。
它始于何年何月已无从考究,但它以自己独具的数学魅力和丰富的内涵正逐渐被越来越多的人们所接受。这种游戏方式简单易学,能健脑益智,是一项极为有益的活动。
算法
首先穷举的可行性问题。把表达式如下分成三类:
1、无括号的简单表达式。
2、有一个括号的简单表达式。
3、有两个括号的较复杂表达式。
在栈中,元素的插入称为压入或入栈,元素的删除称为弹出或退栈。
栈的基本运算有三种,其中包括入栈运算、退栈运算以及读栈顶元素,这些请参考相关数据结构资料。根据这些基本运算就可以用数组模拟出栈来。
那么作为栈的著名应用,表达式的计算可以有两种方法。
第一种方法:首先建立两个栈,操作数栈OVS和运算符栈OPS。
其中,操作数栈用来记忆表达式中的操作数,其栈顶指针为topv,初始时为空,即topv=0;运算符栈用来记忆表达式中的运算符,其栈顶指针为topp,初始时,栈中只有一个表达式结束符,即topp=1,且OPS(1)=‘;’。此处的‘;’即表达式结束符。
然后自左至右的扫描待处理的表达式,并假设当前扫描到的符号为W,根据不同的符号W做如下不同的处理:
1、若W为操作数,
2、则将W压入操作数栈OVS,
3、且继续扫描下一个字符;
4、若W为运算符,
5、则根据运算符的性质做相应的处理;
6、若运算符为左括号或者运算符的优先级大于运算符栈栈顶的运算符(即OPS(top)),则将运算符W压入运算符栈OPS,并继续扫描下一个字符;
7、若运算符W为表达式结束符‘;’且运算符栈栈顶的运算符也为表达式结束符(即OPS(topp)=’;’),则处理过程结束,此时,操作数栈栈顶元素(即OVS(topv))即为表达式的值;
8、若运算符W为右括号且运算符栈栈顶的运算符为左括号(即OPS(topp)=’(‘),则将左括号从运算符栈谈出,且继续扫描下一个符号;
9、若运算符的右不大于运算符栈栈顶的运算符(即OPS(topp)),则从操作数栈OVS中弹出两个操作数,设先后弹出的操作数为a、b,再从运算符栈OPS中弹出一个运算符,设为+,然后作运算a+b,并将运算结果压入操作数栈OVS。本次的运算符下次将重新考虑。
第二种方法:首先对表达式进行线性化,然后将线性表达式转换成机器指令序列以便进行求值。
那么什么是表达式的线性化呢?人们所习惯的表达式的表达方法称为中缀表示。中缀表示的特点是运算符位于运算对象的中间。但这种表示方式,有时必须借助括号才能将运算顺序表达清楚,而且处理也比较复杂。
所谓表达式的线性化是指将中缀表达的表达式转化为波兰表达式。对于每一个表达式,利用栈可以把表达式变换成波兰表达式,也可以利用栈来计算波兰表达式的值。
至于转换和计算的过程和第一种方法大同小异,这里就不再赘述了。
下面给出转换和计算的具体实现程序,这样这个程序基本上就算解决了,回过头来拿这个程序来算一算文章开始的那个问题。很快就算出来了,原来如此简单—(6-3)*10-6=24。
上一篇
24点怎么算
下一篇
24点口诀内容是什么
多重随机标签
西游记狮驼岭概括 apex用71声道有用吗 英雄联盟克隆模式比较强的英雄推荐 地下城与勇士附魔师是什么_地下城与勇士附魔图纸哪里打 按顺时针方向向下一人传花 康斯坦丁2剧本写完了吗 光遇圣岛季什么时候结束 具体几月几号结束这个赛季 荒野大镖客2卡住以后只能移动 dnf维护到几点 威尼斯崛起怎么结婚 天涯明月刀手游太白身份怎么选择 身份选择推荐介绍 魔兽世界厄运之槌钥匙在哪里得 残破剑柄哪里出 星露谷物语鱼饵怎么用 孙美琪疑案嬴雪儿五级线索足球位置介绍介绍_孙美琪疑案嬴雪儿五级线索足球位置介绍是什么 lor战争之影赫卡里姆卡牌介绍 全英雄卡牌攻略 梦幻西游的跑商是什么怎么跑 最终幻想 纷争nt战斗思路讲解与一些实用技巧 亲子游戏红包玩法 和平精英2022年末会返场什么特效枪皮肤 初一新生欢迎词 无限火力发现3个bug第一个蛮子怒气值为0时也能通过消耗怒气回复少量生命第二个兰博处于过热 艾诺迪亚4种各种材料的出现地点分别是在哪里 金庸群侠传x存档打不开 寻找一款单机连连看 阴阳师手游络新妇阵容怎么搭配 王者荣耀铭文搭配大全 赛尔号始祖灵兽解析不解释 冒险岛30级魔法师转什么职业升级最快 黑咲芽亚的介绍