1

我对 (+, -, /, * ) 使用这些运算符和操作数的总和的运算符有疑问。

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

我什至想不出这种方法。任何人都可以帮助我解决这个问题。我正在使用 Java。

谢谢

4

1 回答 1

1

有许多不同的方法,但为了简要描述所有方法,我首先需要重新阅读我在“童年”时读过的书。试试这个解决方案:创建一个可用于:

  • 推送一个值
  • 弹出两个最高值并进行支持的算术运算之一,然后将结果推回
  • 弹出一个值

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

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

于 2012-09-22T04:42:02.897 回答