确定下列算法中语句的执行次数,并给出算法的时间复杂度

int n=10,cout=0; for(int i=1;i<=n;i++) for(int j=1;j<=i;j++) for(int k=1;k<=j;k++) cout ++;

int n=10,cout=0; 执行1次 ,时间复杂度Tn=O(1),
for(int i=1;i<=n;i++) 执行(n+1)次,原操作时间复杂度Tn=O(n) ,
for(int j=1;j<=i;j++) 执行1+2+3+...+n=1/2(n²+n)次, 原操作时间复杂度Tn=O(n²) ,
for(int k=1;k<=j;k++) 执行1+(1+2)+(1+2+3)+...+[1/2(n²+n)]=1/6(n³+3n²+2n)次,n的最高次幂是3,原操作时间复杂度Tn=O(n³),
cout ++;(原操作) 执行1+(1+2)+(1+2+3)+...+[1/2(n²+n)]=1/6(n³+3n²+2n)次,原操作时间复杂度Tn=O(n³)
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2018-03-11
int n=10,cout=0; O(1)
for(int i=1;i<=n;i++) O(n)
for(int j=1;j<=i;j++) O(n^2) 注:1+2+...+n=n(n+1)/2
for(int k=1;k<=j;k++) O(n^3) 注:1 + (1 + 2) + (1 + 2 + 3) + ... + (1 + 2 + 3 + ... + n)
= (1^2 + 1)/2 + ... +(n^2 + n)/2
= (1^2 +...+n^2)/2 + (1+...+n)/2
= n(n+1)(n+2)/6
cout++; 同上O(n^3)本回答被网友采纳
第2个回答  2013-04-16
循环了220次··复杂度是T(1)