【问题标题】:How to add or subtract numbers from a running total such that it will follow random given instructions如何从运行总数中添加或减去数字,使其遵循随机给定的指令
【发布时间】: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


【解决方案1】:

您始终可以使用树形结构强制它。构建一棵包含所有数字排列(正数和负数)的树,根设置为 0。

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

【讨论】:

    猜你喜欢
    • 2020-07-20
    • 2022-06-10
    • 1970-01-01
    • 2021-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多