Проще говоря, на самом деле: просто взгляните на петли в коде.
for (int i=0; i<n; i++)
for(j = i; j<n; j++) {
...
for (int k=i; k<=j; k++)
XXX;
Линия XXX
выполняются n^3
раз (по модулю некоторых постоянного множителя и некоторые более низкие сил n
), так как внешний цикл, очевидно, проходит от 0
к n-1
, «среднему» цикл выполняется из i
(который начнет с 0
, 1
, ...) до n-1
, что означает, что внутренний цикл будет «запущен» приблизительно n^2
раз. Теперь, как i
и j
зависит от n
(например., i
будет 0
и j=n-1
в конце первой внешней итерации), так что линия XXX
будет n
раза (для внутреннего цикла) по n^2
раза (для двух наружных петли), в результате чего в общей сложности n^3
.
Чтобы получить конкретную функцию (n^3 + 3n^2 + 2n)/6
, вам нужно быть более тщательным в своих расчетах и позаботиться обо всех тех факторах, которые я просто пропустил выше.