利用后缀表达式(逆波兰式)算24点的JavaScript版算法
作者:dh20156 来源:w3cgroup 发布时间:2010-01-23 10:57:00
标签:算法,逆波兰式,JavaScript
思想:
4个数字的排列,加上3个运算符的排列,使用后缀表达式的表现如下:
情形一:
1,2,3,4,+,-,* => 24*24*4
情形二:
1,2,3,+,4,-,* => 24*24*4
情形三:
1,2,3,+,-,4,* => 24*24*4
情形四:
1,2,+,3,-,4,* => 24*24*4
情形五:
1,2,+,3,4,-,* => 24*24*4
每种表现形式后面的24为4个数字的排列,4个运算符的排列,后面的4为运算符可能出现的4种情形,以第一种情况为例:
1,2,3,4,+,-,*
1,2,3,4,+,-,+
1,2,3,4,+,+,-
1,2,3,4,+,+,+
至此,大概的算法思想可以总结如下:
声明数据栈ds,保存要计算数字的排列结果;
声明算符栈os,保存四则算符的排列结果;
遍历数据栈,每次按上面列出的后缀表达式数据格式,通过遍历算符栈进行整理组合,直到结束,即可得到所有的计算表达式。
将这些表达式求值,将符合要求(即等于24,由于计算精度问题,大于23.99的结果也算正确)的结果保留,最后还需要一个将后缀表达式转换为中缀表达式的过程。
0
投稿
猜你喜欢
- 在Soundbreak我们每天24小时不间断地播放实况音频和视频,所以对于MySQL的新增的复制特性,我们不能做出很令人信服的测试。通过测试
- DateDiff(timeinterval,date1,date2 [, firstdayofweek [, firstweekofyear
- 代码如下:<%@ Language=VBScript %> <% Dim 
- 加班时抽空弄的,javascript图片链接定时轮换,自适应图片大小,支持预载,进行了简单封装,方便调用。发现自己还是菜得很,一个简单效果被
- 代码如下:set fso=server.createobject("scripting.filesystemobject"
- 后台数据库: [Microsoft Access] 与 [Microsoft Sql Server] 更换之后,ASP代码应注意要修改的一些
- 好久没有写ASP代码了,今天在做一个简单的留言本时,出现了一下错误: Microsoft Office Access Database En
- 1、什么是AspJpeg?AspJpeg是一款功能强大的基于Microsoft IIS环境的图片处理组件,AspJpeg可以使用很少的代码在
- 首先说说什么是内存泄露,在一个进程中,如果某一块内存无法访问,且直到进程结束为止也无法释放,那么就发生了内存泄露。通常这种情况发生在C++之
- 在使用ORACLE的过程过,我们会经常遇到一些ORACLE产生的错误,对于初学者而言,这些错误可能有点模糊,而且可能一时不知怎么去处理产生的
- 奥运来了,三大门户网站都加上了奥运主题。加上下面代码你的网站也拥有奥运主题了:<style type="text/
- 在SQL Server中进行开发会让你身处险地,并且寻找快速解决方案。我们编辑了前十名关于SQL Server开发的常见问题。对常见的针对表
- 如何限制重复订阅邮件或投票?一、准备子程序和函数。1、初始化数据,在Session对象中保存两个变量:Sub InitializeFID()
- background-clip 和 background-origin 是 CSS3 中新加的 background module 属性,用
- 在HTML中,常见的URL有多种表示方式:相对URL: example.php demo
- 内容摘要:本文介绍了asp使用正则表达式自动解析远程图片地址并下载保存的方法,值得收藏!一、使用正则表达式Regexp匹配取得原页中的图片的
- Oracle是世界上用得最多的数据库之一,活动服务器网页(ASP)是一种被广泛用于创建 * 页的功能强大的服务器端脚本语言。许多ASP开发人
- Asp中Server.ScriptTimeOut属性需要注意的一点Server.ScriptTimeout 这个属性给定Asp脚
- 题目:用 JavaScript 代码实现空位补零,比如 pad(12, 3) => 012实现一:/* 平淡无奇法 */functio
- 301和302 Http状态有啥区别?301,302 都是HTTP状态的编码,都代表着某个URL发生了转移,不同之处在于:301 redir