Okay, ich schildere dir mal ein paar Überlegungen, die dir helfen sollten, dein Problem zu lösen:
Ein kleines Beispiel dann wirds vielleicht schon deutlich
\(n = 6\) \( s_i =\{2,3,4\}\)
Ich möchte prüfen, ob es eine Summe von bestimmten \(s_i\), sodass \( s_3=4\) letztes Glied dieser Summe ist und dass diese Summe 6 ergibt.
Und das kann ich prüfen, indem ich checke, ob es eine Summe gibt, mit der ich die Zahl \( 6 - 4 = 2\) abbilden kann.
Vorher muss ich also einmal gecheckt haben, ob ich die Zahl 2 darstellen kann. Das würde auch wieder nach dem selben Prinzip gehen
\( \rightarrow\) mit \(s_1=2\) habe ich \(2-2=0\), also lässt gibt es die Summe mit der \(2 \) als letztes Glied(und einziges)
Also weiß ich, dass ich die ich die Zahl \(6\) als Summe meiner \(s_i\) darstellen kann.
Dafür definieren wir uns im Algorithmus eine zweidimensionale Datenstruktur \(d(i,j)\), die besagt, ob ich die Zahl \(i\) als Summe darstellen kann mit letztem Glied \(s_j\) .
Wichtig ist hier natürlich, dass wir, anders als im Beispiel, natürlich aufsteigend sowohl durch die Werte von n laufen.
Als Vereinfachung kann man sich mal ausdenken, ob man \(s_i \) überhaupt betrachten muss, wenn dieses echt größer als n ist.