Harap pertimbangkan loop bertingkat tiga berikut:
for (int i = 1; i <= n; ++i)
for (int j = i; j <= n; ++j)
for (int k = j; k <= n; ++k)
// statement
Pernyataan di sini dijalankan dengan tepat kali. Bisakah seseorang tolong jelaskan bagaimana formula ini diperoleh? Terima kasih.
Jawaban:
Anda dapat menghitung berapa kali loop terdalam dieksekusi dengan menghitung jumlah triplet(i,j,k) yang dieksekusi.
Dengan kondisi loop kita tahu bahwa: . Kita bisa menguranginya menjadi masalah kombinatorik sederhana berikut.1≤i≤j≤k≤n
Jadi, kita hanya perlu menghitung jumlah cara memilih 3 kotak dari kotak yaitu ( n + 2n+2 .(n+23)
sumber
bagi saya, lebih mudah untuk melihat loop dalam dieksekusi kali dan jumlah total eksekusi dalam loop dalam adalahn−i
ini dapat ditulis ulang sebagai dan dieksekusi n kali, sehingga jumlah total eksekusi adalah∑n−ij=0n−i−j n
sumber