Bitte beachten Sie die folgende dreifach verschachtelte Schleife:
for (int i = 1; i <= n; ++i)
for (int j = i; j <= n; ++j)
for (int k = j; k <= n; ++k)
// statement
Die Anweisung hier wird genau Mal ausgeführt. Könnte jemand erklären, wie diese Formel erhalten wurde? Vielen Dank.
Antworten:
Sie können zählen, wie oft die innerste for-Schleife ausgeführt wird, indem Sie die Anzahl der Triplets(i,j,k) für die sie ausgeführt wird.
Durch die Schleifenbedingungen wissen wir, dass:1≤i≤j≤k≤n . Wir können es auf das folgende einfache kombinatorische Problem reduzieren.
Wir müssen also nur die Anzahl der Auswahlmöglichkeiten für 3 Kästchen aus Kästchen zählen, also .n+2 (n+23)
quelle
Für mich ist es einfacher zu bemerken, dass die innere Schleife Mal ausgeführt wird und die Gesamtzahl der Ausführungen in der inneren Schleife istn−i
Dies kann wie folgt umgeschrieben werden und ausgeführt wird n - mal, so dass die Gesamtzahl der Ausführungen ist∑n−ij=0n−i−j n
quelle