创建具有更好运行时的算法

时间:2016-03-23 11:50:34

标签: algorithm time-complexity pseudocode

我有一个数字A [1],A [2] ...,A [n]和矩阵B(nxn)的矩阵A,我想保存所有可能的总和。计算B矩阵的简单算法是:

for i=1,2,...,n
    for j=i+1,i+2,...,n
        add the number from A[i] to A[j]
        save the results to B[i][j]
    endfor
endfor

我想将此算法更改为更好(具有更好的运行时)。 我改变了第一个i = 1,2,... n到i = 1并且我在第二个结束时增加了这个。我还认为我做了更多需要的计算。要计算B [1] [5]我必须计算A [1] [2] + A [1] [3] + A [1] [4]但是这个总和也在B [1] [4]。所以我也可以用较少的计算来计算(B [1] [4] + A [1] [5])。 任何人都可以帮我改进这个算法吗?

1 个答案:

答案 0 :(得分:0)

for i=1,2,...,n
    for j=i,i+1,i+2,...,n
        if i == j then B[i][j] = A[j]
        else B[i][j] = B[i][j - 1] + A[j]
    endfor
endfor