如何从运行总计中添加或减去数字,使其遵循随机给定的说明



给定唯一正数的排序列表,找到这些数字应相加或相减的顺序,以便在每次计算中,根据由 +/- 符号组成的给定指令,总数应为正数或负数。
指令数将与给出的数字数匹配,每个数字只能使用一次,加减
数字时总数不能为零

例:
货号: 8 19 56 65 73 79 87 说明: - + - - - - +
可能的解决方案: -79 +87
-19 +8 -65 +56 +73

我一直被困在这个问题上,无法找到可以涵盖所有情况的问题方法。我似乎无法弄清楚如何找到应该首先使用哪个数字,因为我可能会用完将创建有效下一个总数的数字。我制作了许多随机数字集,并尝试对它们应用不同的指令集,但我找不到任何可靠的趋势或方法可以帮助我解决这个问题。到目前为止,我所考虑的是,例如,如果我想保持一个数字为负数,我应该添加可能的最大数字,该数字仍然会与负数求和。如果我想再次保持负数,我会减去一个小于刚刚添加的数字的数字。这同样适用于正数,但加减颠倒了。

例如:给定 1 2 3 4 和 - - - +
我会减去 3 来创建第一个负数,加 2 以保持负数,同时试图使其足够接近零(如果我要减去并且下一条指令是 +,那么它将无法达到(,减去 1 保持负数,最后加上 4 跟随 +。
答案是:-3 +2 -1 +4


我不是要找人做功课,我只是想得到一些帮助来引导我朝着正确的方向前进,因为出于某种原因,我对这个问题感到非常无助。这是我用python编码的问题,但我什至不知道如何开始,所以我只是希望得到概念上的帮助。

您始终可以使用树结构对其进行暴力破解。构建一个包含数字所有排列(正和负(的树,根设置为 0。

然后使用深度优先遍历将这些数字相加,检查结果是否与沿途的预期符号匹配。回溯并删除子树(如果不匹配(。如果你到达一片叶子,你就找到了解决方案。

最新更新