Por favor, considere o seguinte loop aninhado triplo:
for (int i = 1; i <= n; ++i)
for (int j = i; j <= n; ++j)
for (int k = j; k <= n; ++k)
// statement
A instrução aqui é executada exatamente vezes. Alguém poderia explicar como essa fórmula foi obtida? Obrigado.
Respostas:
Você pode contar o número de vezes que o loop for mais interno é executado, contando o número de trigêmeos para os quais é executado.(i,j,k)
Pelas condições do loop, sabemos que: . Podemos reduzi-lo ao seguinte problema combinatório simples.1≤i≤j≤k≤n
Então, só precisamos contar o número de maneiras de escolher 3 caixas de caixas que é ( n + 2n+2 .(n+23)
fonte
para mim, é mais fácil notar que o loop interno é executado vezes e o número total de execuções no loop interno én−i
isso pode ser reescrito como e é executado n vezes, portanto, o número total de execuções é∑n−ij=0n−i−j n
fonte