Du kannst die Lösung nicht mit dem ersten Aufruf von UNKNOWN finden, sondern musst UNKNOWN immer wieder mit neuen Parametern aufrufen.
Im Prinzip wird der Ablauf der "Elternfunktion" pausiert, bis die "Kindfunktionen" einen Wert zurückgeben können.
Ich gehe davon aus, das die Indizes von 1-8 laufen und nicht wie gewohnt von 0-7 für 8 Einträge. Darauf deutet das A[1...8] hin.
Zur Vereinfachung ist: u( l, r ) => UNKNOWN( A, l, r ) und max( a, b ) die größere Zahl von a und b
Die ersten paar Aufrufe wären dann:
u( 1, 8 ) => max( u( 1, 3 ), u( 4, 8 ) ) // q=3
u( 1, 3 ) => max( u( 1, 1), u( 2, 3 ) ) // q=1
u( 1, 1 ) => 6
u( 2, 3 ) => max( u( 2, 2 ), u( 3, 3 ) ) // q=2
u( 2, 2 ) => 4
u( 3, 3 ) => 2
u( 2, 3 ) => max( 4, 2 ) => 4
u( 1, 3 ) => max( 6, 4 ) => 6
// u( 4, 8 ) geht dann analog zu u( 1, 3 )
Punkte: 30
Hey ds, vielen herzlichen Dank. Endlich verstehe ich es!!!
─ sayuri 13.01.2021 um 14:32