In Bezug auf das klassische Problem der N identische Kugeln in M verschiedenen Bins und Drucken aller Kombinationen: Was wäre, wenn Sie das Problem durch Drucken aller Fälle 0< M, N
erweitern möchten Brute-Force-Methode so etwas wie dies geschehen könnte:Berechnen, wie viele Bälle in Behältern über mehrere Werte mit dynamischer Programmierung
for (int i =0; i<M; i++)
{
for (int j =0; j <N; j++)
{
PrintAllCombinations(j,i)
}
}
Nun, wenn wir den Ausgang des ersten Paar m studieren und n, sehen wir, dass der Ausgang jeder vorherigen Iteration eine Teilmenge der nächsten ist. Es scheint mir, dass wir einen dynamischen Algorithmus anwenden können, um dieses Phänomen auszunutzen. Da wir jedoch immer noch alle n
partitionieren müssen, zum Beispiel n=3 = 3 +0, 2+1, 1+2
. Wir müssen immer noch viele redundante Kombinationsberechnungen machen.
Irgendwelche Ideen für Verbesserungen?
Verwenden Sie eine rekursive Methode. Ihr Code funktioniert nur für zwei Ebenen (i, j) und nicht (i, j, k, l, ....). – jdweng
Nicht sicher, ob Hausaufgaben-Dump oder echte Frage. – Guy