使用给定的操作数和运算符查找总和的不同排列

时间:2012-09-22 02:24:13

标签: algorithm permutation

我遇到了运营商的问题 (+, -, /, * ) 使用这些运算符和操作数的总和。

所以例如我需要使用3个操作数(1,2,3)和+运算符得到总共6个,这可能是该特定结果的排列总数。

我甚至无法想到这种方法。任何人都可以帮助我。我正在使用Java。

由于

1 个答案:

答案 0 :(得分:1)

有许多不同的方法,但是为了简单地描述所有这些方法,我首先需要重新阅读我过去在童年时期阅读过的书籍。尝试此解决方案:创建可用于:

的堆栈
  • 推送值
  • 弹出两个最顶层的值并制作一个支持的算术 操作,然后推回结果
  • 弹出一个值

通过这种方式,您可以使用简单的堆栈计算机来执行必要的计算。接下来,您需要生成所有可能的操作数和运算符串联的排列。当您从此连接中获取操作数时,将其推入堆栈。当你拿起操作员 - 你执行它。在执行操作符时,检查堆栈中是否至少包含两个元素 - 否则您需要跳过此运算符并寻找下一个可能的操作数。如果连续序列中没有更多操作数,并且堆栈中只有一个元素 - 这意味着您已完成当前计算。所以将结果与给定结果进行比较,并根据需要记录序列。然后切换到下一个排列

这绝对不是最佳解决方案 - 有很多优化可能性。这是最有趣的部分:)祝你好运