我正在寻找一些如何处理这个特定背包问题的想法(我相信这是背包式的问题,虽然我可能会弄错)。
作为输入,我们得到一组数字,每个都可以是正数或负数 - 我们都不知道。 我们必须找到这些数字之和的最小可能绝对值。 我们不必使用所有数字。我们必须按照给出数字的相同顺序进行加法(或减法),我们必须从第一个数字开始(加上或减去后面的数字)。
示例是:
4 11 5 5 => 0
because 4+11-5-5 = 0
10 3 9 4 100 => 2
because 10-3-9 = -2
在第二个例子中,我们跳过了最后两个数字 - 因为添加下一个数字不会给我们更小的绝对数字。
数量最多可达5,000 ,他们的总和不超过10,000
它们是整数
答案 0 :(得分:1)
如果您要探索5000个数字的加法和减法的所有组合,则必须通过2 5000 -1≈1.4⋅10 1505 替代方案。这显然不合理。但是,由于数字之和最多为10000,我们知道所有部分和(包括减法)必须介于-10000和10000之间,因此可以有少于20000个不同的总和。如果您在处理5000个职位时只考虑不同的金额,那么您需要考虑的金额少于1亿,这对计算机而言并不是那么多。
<小时/> 示例:假设前三个数字是5,1,1。包含正好三个数字的可能总和是
5+1+1=7
5+1-1=5
5-1+1=5
5-1-1=3
在添加第四个数字之前,重要的是要认识到四个计算中只有三个唯一的结果。