Odpowiedź:
myślę, że ten algorytm pomoże.
1. Utwórz metodę, która daje wynik maksymalnej sumy poszczególnych tablic wejściowych użytkownika, powiedz T [n], gdzie n oznacza sumę nie. elementów.
2. Teraz ta metoda będzie nadal dodawać elementy tablicy, dopóki nie będą pozytywne. Chcemy zmaksymalizować sumę i nie ma sensu opuszczać pozytywnych elementów.
3. Gdy tylko nasza metoda napotka element ujemny, przeniesie wszystkie kolejne negatywne elementy do innej metody, która utworzy nową tablicę, powiedz N [i] tak, że ta tablica będzie zawierała wszystkie kolejne negatywne elementy, które napotkaliśmy w T [n] i zwraca maksymalne wyjście N [i].
W ten sposób nie wpływa to na naszą główną metodę i nadal dodaje pozytywne elementy, a ilekroć napotyka element ujemny, zamiast dodawać swoje rzeczywiste wartości dodaje wynik netto maksymalnej liczby kolejnych ujemnych elementów. Na przykład: T [n] = 29,34,55, -6, -5, -4,6,43, -8, -9, -4, -3,2,78 // tutaj: n = 14
główna metoda działania:
29 + 34 + 55 + (wysyła dane & przyjmie wartość metody wtórnej tablicy [-6, -5, -4]) + 6 + 43 + (wysyła dane & otrzymuje wartość z drugiej metody tablicy [-8, -9, -4, -3]) + 2 + 78
Proces kończy się z maksymalnym wyjściem.
Metoda wtórna robocze:
{
N [i] = dostaje tablicę z metodą głównym lub samo w razie potrzeby. Jest to w zasadzie metoda rekurencyjna.
powiedzieć N [i] zawiera elementy, takie jak N1, N2, N3, N4, itp
dla i> = 3:
Teraz wybór idzie tak.
1. Jeśli weźmiemy N1, możemy powtórzyć tablicę z lewej strony, tj. N [i-1], która ma wszystkie elementy z wyjątkiem N1 w tej samej kolejności.Tak, że wyjście max netto będzie
N1 + (wysyła dane & przyjmie wartość metody wtórnej tablicy N [j -1] rekurencyjnie)
2. Jeżeli nie bierze N1, to nie można pominąć N2. Algorytm Teraz jest jak pierwszy wybór, ale zaczyna się od N2. Więc maksymalna moc w tym przypadku będzie wynosić
N2 + (wysyła dane & pobiera wartość z wtórnej metody tablicy N [i-2] rekursywnie). Tutaj N [i-2] to tablica zawierająca wszystkie elementy N [i] z wyjątkiem N1 & N2 w tej samej kolejności.
Zakończenie: Gdy pozostanie nam tablica o rozmiarze jeden (dla N [i-2]), wówczas musimy wybrać tę konkretną wartość jako brak opcji.
Rekurencje w końcu przyniosą maksymalne wyniki i musimy ostatecznie wybrać wyjście z tego wyboru, które jest więcej. i przekieruj maksymalne wyjście do dowolnego miejsca.
dla i = 2:
musimy wybrać wartość, która jest większa
dla i = 1:
Możemy z pewnością pominąć tę wartość.
Więc max moc w tym przypadku będzie 0.
}
Spędziłem dużo czasu staramy się robić jak @IVIad pomysłu, bez powodzenia, ale najlepszym sposobem, aby zaatakować ten problem jest wykaz wszystkich ważnych list (nie do pominięcia więcej niż jednej && nie zatrzymaj się przed elementem n-1), a następnie dodaj odpowiednie wartości i uzyskaj maks. Za chwilę go wdrożę, tylko kwestią czasu. – TiMr