Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 如何从一个运行总数中加上或减去数字,使其遵循随机给定的指令_Algorithm_Sorting_Conceptual - Fatal编程技术网

Algorithm 如何从一个运行总数中加上或减去数字,使其遵循随机给定的指令

Algorithm 如何从一个运行总数中加上或减去数字,使其遵循随机给定的指令,algorithm,sorting,conceptual,Algorithm,Sorting,Conceptual,给定一个唯一正数的排序列表,找出这些数字的加或减顺序,以便在每次计算中,根据包含+/-符号的给定说明,总数应为正数或负数指令的数量将与给定的数字数量相匹配,每个数字只能使用一次,加或减数字时总数不能为零 示例: 数字:819565737987 说明:-+-+ 可能的解决方案:-79+87-19+8-65+56+73 我一直被困在这个问题上,想不出一个可以涵盖所有情况的解决方法。我似乎不知道如何找到应该首先使用的数字,因为我可能会用完可以创建有效下一个总数的数字。我制作了许多随机的数字集,并尝试对

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

示例:
数字:819565737987
说明:-+-+
可能的解决方案:-79+87-19+8-65+56+73

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

例如:给定1234和---+
我会减去3来创建第一个负数,加2来保持负数,同时尽量使它接近零(如果我要减去,而下一条指令是+那么它就不可能达到),减去1来保持负数,最后加4来跟随+
答案是:-3+2-1+4



我不是想找人帮我做作业,我只是想得到一些帮助来指引我正确的方向,因为出于某种原因,我在这件事上感到非常无助。这是我用python编写代码时遇到的一个问题,但我甚至不知道如何开始,因此我非常感谢概念上的帮助。

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


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

你可以用一个树形结构对它进行暴力攻击。构建一个包含所有数字排列(正数和负数)的树,根设置为0


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

这看起来真像是一个家庭作业问题。你试过什么?请发布您的代码。我建议列出可用数字之间的差异,并使用这些差异来指导您的选择。很抱歉,我还没有代码,但我已考虑从中间数字开始,并交替数字列表的符号(-1、+2、-3、+4)。可能朝着一边工作,当指令从一个符号切换到另一个符号时,我会使用列表的另一边,希望达到一个有效的总数。不幸的是,这并没有一直奏效,但我觉得它仍然有些有用。第一个和一个接一个地浏览列表,然后第二个和列表的其他部分之间的区别是什么?这看起来真的像是一个家庭作业问题。你试过什么?请发布您的代码。我建议列出可用数字之间的差异,并使用这些差异来指导您的选择。很抱歉,我还没有代码,但我已考虑从中间数字开始,并交替数字列表的符号(-1、+2、-3、+4)。可能朝着一边工作,当指令从一个符号切换到另一个符号时,我会使用列表的另一边,希望达到一个有效的总数。不幸的是,这并没有一直奏效,但我觉得它仍然有一定的用处。区别是第一个和一个接一个地浏览列表,然后是第二个和列表的其他部分?