algorithm - 一组数字与二元运算符的排列
问题描述
让我们给出一组数字。通过在它们之间插入由二元运算符组成的另一个集合的元素,并用平衡括号对表达式进行分组,找到所有可能的排列。
问题的挑战性部分是一些二元运算符的交换行为。例如,如果表达式(2 + 3) * 5
已经找到,则不需要计算表达式(3 + 2) * 5
, or 5 * (2 + 3)
, or5 * (3 + 2)
因为运算符+
and的交换恒等式*
。他们以前的等价物需要被忽略。
这个问题的另一个方面是通过平衡括号进行分组。给定2 * 3 + 5
,分组2 * (3 + 5)
给出了不同的结果,但是(2 * 3) + 5
,甚至(((2 * 3)) + 5)
只是创建了重复。
是否有任何算法来处理这些类型的问题?如何通过优化二元运算符的交换行为并过滤导致重复的括号来找到表达式的所有排列?
解决方案
推荐阅读
- google-cloud-firestore - 基于不存在文档的 Firestore 事务(集合级别锁定不可用)
- dataframe - 如何保留表中以分号分隔的字段的第一个、最小值、最大值?
- asp.net-mvc - Asp.net Core Federation ADFS 和 Web 应用程序代理
- java - java布尔方法总是返回false
- python - 将 DataFrame 重塑为 RNN Keras-tensorflow 的 3D 数组?
- shell - 如何从属性文件中进行变量替换并通过 Jenkinsfile 读取文件
- r - Group_by 表示 R 中的多列
- android - 如何修复警报管理器中的错误?
- ibm-cloud - Wix 网站上的 Watson Assistant Chatbot 集成
- python - Ansible 与 itertools 循环