Dynamische Programmierung


Kann man dann pauschal sagen, dass ich den letzten wert auf den ersten setze und die andere auch einfach so tausche?


das ist zumindest die übliche vorgehensweise


Den letzten Wert auf den ersten setzen???
Hä?
für mich wird der „letzte Wert“ der vorletze, weil den letzten berechne ich ja neu (letzter = der Wert, der dann auch wieder vorletzter wird etc.)

Das Prinzip läuft doch genau immer so, dass man den am weitesten wegliegenden wert ausgibt im if-Zweig und die anderen weiterrücken lässt, oder?


Hier mal meine Gedanken zum Durchreichen.
Ist zwar ohne Erklärung vielleicht nicht zu 100% verständlich, hilft vielleicht trotzdem weiter

Attachment:
Durchreichen.pdf: https://fsi.cs.fau.de/unb-attachments/post_104382/Durchreichen.pdf

1 „Gefällt mir“

25.02.2010 DynProg
25.02.2010
3c)…

private static long[][] b = new long[MAX][MAX];
//-1 vorinit

private static long binomFast(int n, int k) {
		
		if(b[n][k] != -1)
			return b[n][k];

		if(k>n)
			return 0;
		if(k == 0 || k==n)
			return 1;
		else 
			b[n][k] = binom(n-1,k-1) + binom(n-1,k);

		return b[n][k];
	}

Irgendwas is da noch falsch, glaub das mit dem else b[n][k] = funzt so nicht… komm nicht drauf…


Hab mir die Aufgabenstellung nicht angeschaut, aber so vom code her seh ich jetzt keinen Fehler, außer dass es wohl binomFast statt binom bei den Rekursionsaufrufen heißen muss. Kannst es ja mal schnell compilieren und testen.