我相信内部循环会运行
t = 1/8 * (N^4 + 6 * N^3 + 7 * N^2 + 2 * N)
次数。
我并没有直接解决问题,而是对从1到50的N精确计算t拟合了一个四阶多项式表达式,希望能得到精确匹配。
为了计算精确的t值,我使用了
sum(sum(sum(sum(1,i,k,j+1),j,max(l,k),N),k,1,N),l,1,N)
这应该等同于实际运行您的循环。
数据拟合,对数比例 http://img714.imageshack.us/img714/2313/plot3.png
N从1到50的拟合完全匹配,并使用两种方法计算N=100得到13258775。
编辑:
这个练习是使用开源代数系统maxima完成的,这里是实际源代码(输出被丢弃):
nr(n):=sum(sum(sum(sum(1,i,k,j+1),j,max(l,k),n),k,1,n),l,1,n);
M : genmatrix( lambda([i,j],if j=1 then i else nr(i)), 50, 2 );
coefs : lsquares_estimates(M, [x,y], y = A*x^4+B*x^3+C*x^2+D*x+E, [A,B,C,D,E]);
sol(x):=ev(A*x^4+B*x^3+C*x^2+D*x+E, coefs);
sol(N);
S : genmatrix( lambda([i,j], if j=1 then i else sol(i)), 50, 2);
M-S;
plot2d([[discrete,makelist([M[N][1],M[N][2]],N,1,50)], sol(N)], [N, 1, 60], [style, points, lines], [color, red, blue], [legend, "simulation", sol(N)], [logy]);
compare(nr(100),sol(100));
t += j + 1 - k
或类似的东西来替换,但我仍然不知道你想做什么。 - Eli Bendersky