gegeben eine Liste von Zahlen, um die maximale Summe nicht benachbarter Elemente mit Zeit Komplexität o (n) und Raumkomplexität von o (1) zu finden, könnte ich verwenden diese:max Summe der Listenelemente jeweils getrennt durch (mindestens) k Elemente
sum1= 0
sum2= list[0]
for i in range(1, len(list)):
num= sum1
sum1= sum2+ list[i]
sum2= max(num, sum2)
print(max(sum2, sum1))
dieser Code funktioniert nur, wenn die k = 1 [nur ein Element zwischen den summierenden Zahlen], wie es durch Ändern k-Wert unter Verwendung einer dynamischen Programmierung verbessern könnte. wobei k die Anzahl der Elemente zwischen den Summierungszahlen ist. zum Beispiel:
list = [5,6,4,1,2] k = 1 answer = 11 # 5 + 4 + 2
list = [5,6,4,1,2 ] k = 2 answer = 8 # 6 + 2
list = [5,3,4,10,2] k = 1 answer = 15 # 5 + 10
Wenn ich Ihren Code ausführen, bekomme ich 13 statt 11. Ich sehe nicht, wie es erzwingt, dass mindestens eine Zahl zwischen den Zahlen summiert wird. – Karin
Sind alle Zahlen nicht negativ? –