Wir erhalten ein Array mit allen a [ i ] > 0 .
Nun müssen wir herausfinden, wie viele verschiedene Summen aus ihren Subarrays gebildet werden können (wobei ein Subarray ein zusammenhängender Bereich des Arrays ist, dh für einige j , k , die Summe ist die Summe aller Elemente des Subarrays). Wenn beispielsweise a = [ 1 , 2 , 1 ] ist , lautet die Antwort 4: Wir können 1 , 2 , 3 , 4 bilden .
Ich weiß, wie man die Anzahl verschiedener Summen in .
Darüber hinaus wurde mir klar, dass dies dem klassischen Problem ähnelt, bei dem die Anzahl der unterschiedlichen Teilzeichenfolgen einer Zeichenfolge ermittelt werden muss. Ich dachte über die Möglichkeit nach, ein Suffix-Array zu konstruieren und auf ähnliche Weise zu lösen (in -Zeit). Aber ich habe nicht herausgefunden, wie ich das ändern kann, damit es hier funktioniert. Wenn wir beispielsweise das Suffix-Array für a = [ 1 , 2 , 1 ] verwenden, erhalten wir 5 Fälle anstelle der vier zulässigen Fälle. Ist dies mit Suffix-Arrays möglich oder denke ich in die falsche Richtung?
quelle
Antworten:
Das "fast sicher" liegt daran, dass das Problem die Werte der Summen nicht als Ausgabe benötigt. Ich glaube jedoch nicht, dass Duplikate vermieden werden können, ohne zumindest die meisten Werte zu bestimmen.
quelle