利用后缀表达式(逆波兰式)算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
  • asp之家 网络编程 m.aspxhome.com