首页 > 解决方案 > 一组数字与二元运算符的排列

问题描述

让我们给出一组数字。通过在它们之间插入由二元运算符组成的另一个集合的元素,并用平衡括号对表达式进行分组,找到所有可能的排列。

问题的挑战性部分是一些二元运算符的交换行为。例如,如果表达式(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)只是创建了重复。

是否有任何算法来处理这些类型的问题?如何通过优化二元运算符的交换行为并过滤导致重复的括号来找到表达式的所有排列?

标签: algorithmoptimizationoperatorspermutationparentheses

解决方案


推荐阅读