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

猜你喜欢

  • PHP实现图片合并的示例详解

    2023-06-08 14:14:07
  • sql查询点滴记录

    2024-01-14 14:30:19
  • Python安装第三方库及常见问题处理方法汇总

    2022-11-22 04:40:51
  • javascript 45种缓动效果(二)

    2009-09-19 18:53:00
  • ExtJs事件机制基本代码模型和流程解析

    2024-05-03 15:59:14
  • vue使用iframe嵌入网页的示例代码

    2024-05-05 09:12:04
  • python tensorflow学习之识别单张图片的实现的示例

    2023-06-30 21:11:32
  • 多栏自适应布局问题浅谈

    2010-08-16 12:56:00
  • 使用python生成杨辉三角形的示例代码

    2023-04-03 18:42:31
  • DataFrame.to_excel多次写入不同Sheet的实例

    2022-03-26 01:20:14
  • Python实现猜年龄游戏代码实例

    2021-01-17 09:53:04
  • Python基础语法之容器详解

    2022-01-07 23:20:19
  • django.db.utils.ProgrammingError: (1146, u“Table‘’ doesn’t exist”)问题的解决

    2022-01-12 14:02:31
  • python代码实现小程序登录流程时序总结

    2022-10-16 17:30:14
  • JSP实现浏览器关闭cookies情况下的会话管理

    2024-03-27 07:29:10
  • Shellcode加密解密函数

    2009-04-24 11:18:00
  • SQL Server正则表达式 替换函数应用详解

    2024-01-28 06:01:16
  • SQL Server DATEDIFF() 函数用法

    2024-01-17 16:18:16
  • python中利用队列asyncio.Queue进行通讯详解

    2023-02-13 03:52:58
  • JS实现不规则TAB选项卡效果代码

    2024-06-20 03:54:32
  • asp之家 网络编程 m.aspxhome.com