13 请考虑以下三重嵌套循环: for (int i = 1; i <= n; ++i) for (int j = i; j <= n; ++j) for (int k = j; k <= n; ++k) // statement 此处的语句正好执行n (n + 1 )(n + 2 )6n(n+1)(n+2)6次 有人可以解释一下该公式是如何获得的吗?谢谢。 algorithms time-complexity algorithm-analysis — 鑫 source 1 嵌套循环的时间复杂度公式问题也可能引起关注。 — Juho 2012年
14 您可以通过计算最里面的for循环执行的三元组的数目来计算(i ,j ,k )(i,j,k)执行次数。 1 ≤ 我≤ Ĵ ≤ ķ ≤ Ñ1≤i≤j≤k≤n n + 2n+2 n + 2n+2 (i ,j ,k )(i,j,k) 一世i jj kk n+2n+2(n+23)(n+23) — 里兹万胡达 source 2 好答案!i,j,k的确切值并不重要。我们只需要知道任何蓝色框都可以放置在n个可能的位置中,并且它们的位置是有界的:第二个始终位于第一个之后和第三个之后。 — 大卫Natingga @rizwanhudda清除,但的部分除外。你能解释一下吗?看起来像正确的数字。n + 2 n + 3+2+2n+2n+2n+3n+3 — saadtaame 2012年 1 @saadtaame是的。您可以想象有红色框,但是可以自由地从“红色框”中选择3个红色框来绘制蓝色,因为您不能将第一个框上色为蓝色(因为)Ñ + 2 我≥ 1n+3n+3n+2n+2i≥1i≥1 — rizwanhudda
3 对我来说,它更容易内循环执行的通知倍和处决的总数中内环为n−in−i (n−i)+(n−i−1)+(n−i−2)+…+1(n−i)+(n−i−1)+(n−i−2)+…+1 可以将其重写为并执行次,因此执行的总数为n∑n−ij=0n−i−j∑j=0n−in−i−jnn ∑i=0n∑j=0n−in−i−j=n(n+1)(n+2)6∑i=0n∑j=0n−in−i−j=n(n+1)(n+2)6 — 安迪·麦克沃伊 source 对您的挑战:假设您有一个x嵌套循环。根据先前的答案,它将执行(n + x-1)次选择x次。您将如何计算公式? — 大卫Natingga 幸运的是,OP并没有要求进行X嵌套!给定的其他答案如何扩展为x嵌套循环?我的答案应该只是获得更多的和,从0到n,从0到n-i_1,从0到n-i_2,...,从0到n-i_x。但是我不知道该怎么计算。 — 2012年 1 对于一般的x,答案并没有明确扩展,但是提供的推理过程很容易遵循x嵌套循环。您只需添加更多蓝色框。我也不知道如何计算更多的和。 — 大卫Natingga