数字增量算法效率

时间:2015-02-27 14:10:02

标签: algorithm

我坚持优化算法;算法就是这样运作的。假设我们有一个表达式a+b+c+d,并且该算法是为了获得可能达到数字的每个数字组合;比方说,n= 10。 所以算法会输出这个;

1+1+1+1
1+1+1+2
1+1+1+3
..............
1+1+1+10
1+1+2+1

依此类推,直到它到达结尾为止

10+10+10+10

然而,我遇到的问题是随着n(最大数量)的增加,算法的运行时间会迅速增加。

n增加时,是否存在削减运行时的方法?我很难过。

无法发布源代码ATM,因为我不在家,但它是在c ++中完成的。

1 个答案:

答案 0 :(得分:1)

对于组合部分,如果“a + b + c + d”等于“a + b + d + c”,则可以通过将循环写为

来节省一些时间
for (int i = 0; i < n; ++i) {
    for (int j = i; j < n; ++j {
        // etc.
    }
}

但需要O(n ^ 4)。

否则,如果问题确切地“达到了数字的每个数字组合”,那么应该有一个4到4 * n的封闭形式解决方案。

你不需要达到每一种组合。只是计算结果。或者我误解了这个问题。