【发布时间】:2019-11-24 22:03:04
【问题描述】:
给定一个唯一正数的排序列表,找出这些数字的加减顺序,以便在每次计算时,根据由 +/- 符号组成的给定指令,总数应该是正数或负数。
指令的数量将与给定的数字数量相匹配,每个数字只能使用一次,加减数字时总和不能为零
示例:
号码: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 中编码的一个问题,但我什至不知道如何开始,所以我只是感谢概念上的帮助。
【问题讨论】:
-
这看起来像是一个家庭作业问题。你试过什么?请发布您的代码。
-
我建议列出可用数字之间的差异,并使用这些差异来指导您的选择。
-
抱歉,我还没有代码,但我想从中间的数字开始,并交替数字列表的符号(-1、+2、-3、+4)。可能朝一侧工作,当说明从一个符号切换到另一个符号时,我会使用列表的另一侧来希望达到一个有效的总数。不幸的是,这并没有一直有效,但我觉得它仍然有些用处
-
第一个之间的区别会一一遍历列表,然后第二个和列表的其余部分一一遍历吗?
标签: algorithm sorting conceptual