利用后缀表达式(逆波兰式)算24点的JavaScript版算法
作者:dh20156 来源:w3cgroup 时间:2010-01-23 10:57:00
思想:
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的结果也算正确)的结果保留,最后还需要一个将后缀表达式转换为中缀表达式的过程。
标签:算法,逆波兰式,JavaScript
0
投稿
猜你喜欢
有效网页表单的八条规则[译]
2009-06-01 10:29:00
有时间先后的翻页
2008-05-23 13:14:00
使用 XML 模板 (MSSQL手册)
2008-09-04 14:25:00
写出完美CSS代码的5个重要方面
2009-12-30 16:44:00
服务端XMLHTTP(ServerXMLHTTP in ASP)基本应用(下)
2008-11-11 12:59:00
ASP中转换unicode编码为gb2312函数
2007-10-22 17:46:00
如何测试字符串的长度?
2009-11-11 20:02:00
asp内置对象ObjectContext详解
2007-09-18 13:16:00
如何利用数据库内容建立一个下拉式列表?
2010-01-01 15:46:00
在Dreamweaver MX中应用“占位图形”
2009-07-10 13:16:00
段正淳的css笔记(6)-浅谈css框架开发
2008-01-13 22:42:00
一次性压缩Sqlserver2005中所有库日志的存储过程
2012-01-29 17:58:28
asp压缩access数据库(带密码)方法
2007-09-06 19:48:00
10个不为人知的Google失败作品
2008-05-24 16:56:00
[ASP]利用 xmlhttp 分块上传文件
2008-07-04 14:14:00
MYSQL数据库设计的一点总结
2008-05-24 09:36:00
如何设计注册激活邮件
2010-01-12 13:14:00
如何由Sybase向SQL Server移植数据库
2009-01-20 15:56:00
GetPageSize和GetPageScroll:获取页面大小、窗口大小和滚动条位置
2008-12-27 22:30:00
Js的MessageBox
2008-05-16 10:25:00