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

问题描述 投票:1回答:1

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

示例:号码: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编码的问题,但我什至不知道如何开始,所以我将不胜感激。

给出唯一正数的排序列表,找到这些数字相加或相减的顺序,以便每次计算时,总和应为正或负。...]]

algorithm sorting conceptual
1个回答
0
投票

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

然后使用深度优先遍历来添加这些数字,并检查结果是否与预期的符号匹配。回溯并删除不匹配的子树。如果碰到一片叶子,您已经找到了解决方法。

© www.soinside.com 2019 - 2024. All rights reserved.