网络编程
位置:首页>> 网络编程>> JavaScript>> 利用后缀表达式(逆波兰式)算24点的JavaScript版算法

利用后缀表达式(逆波兰式)算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
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com