Zdefiniuj „maksymalną pod-tablicę” danej tablicy jako „(kolejną) pod-tablicę, która ma największą sumę”. Uwaga: nie ma wymogu „niezerowego”. Wydaj tę sumę.
Podaj opis swojego kodu, jeśli to możliwe.
Przykładowe wejście 1:
1 2 3 -4 -5 6 7 -8 9 10 -11 -12 -13 14
Przykładowy wynik 1: 24
Opis 1:
Największa suma jest uzyskiwana przez wycinanie 6 7 -8 9 10
i sumowanie.
Przykładowe dane wejściowe 2: -1 -2 -3
Przykładowe dane wyjściowe 2: 0
Opis 2: To proste :) Pusta podtablica jest „największą”.
Wymaganie:
- Nie czytaj niczego poza stdin, a wyjście powinno przejść do stdout.
- Obowiązują standardowe ograniczenia luk .
Ranking: Najkrótszy program wygrywa ten golf .
Odpowiedzi:
Łuska ,
64 bajtówWypróbuj online!
źródło
Python 3 , 61 bajtów
Wypróbuj online!
Algorytm skradziony z Wikipedii .
źródło
Pyth , 8 bajtów
Wypróbuj online!
W jaki sposób?
źródło
05AB1E , 4 bajty
Wypróbuj online!
-1 dzięki Adnan .
źródło
ÎŒOM
powinna działać na 4 bajty.M
szuka największej liczby w spłaszczonej wersji stosu.Galaretka , 6 bajtów
Wypróbuj online!
źródło
C ++,
197195187 bajtów-10 bajtów dzięki Zacharýowi
źródło
l
ih
tak czy inaczej?R , 54 bajty
Wypróbuj online!
Algorytm pobrany z: Maksymalny problem z podtablicą
R , 65 bajtów
Wypróbuj online!
x
ze standardowego.y
jako indeksx
.m
(początkowom=0
).m
.m
.R , 72 bajty
Wypróbuj online!
x
ze standardowego.m
(początkowom=0
).m
.m
.Inne nieudane pomysły
58 bajtów
63 bajty
72 bajty
źródło
a=b=0
też działa. Ponadto musisz obsłużyć drukowanie wydruku. Po uruchomieniu jako pełny program (przezsource
) nie drukuje niczego.cat(b)
, ale jeśli pochodzą zecho=TRUE
tego, wystarczy wezwaćb
do wydruku.T=F
zamiasta=b=0
zapisać dwa bajty, ponieważmax
będzie zmuszaćb
donumeric
.Haskell , 28 bajtów
Wypróbuj online!
źródło
scanl
? więcfoldl((max<*>).(+))0
??05AB1E , 4 bajty
-2 bajty dzięki Adnan
Wypróbuj online!
źródło
ÎŒOM
powinien działać przez 4 bajtyMathematica, 24 bajty
źródło
Haskell ,
4133 bajtówWypróbuj online! dzięki Laikoni
źródło
g=
. Zamiast tegoconcatMap
możesz użyć=<<
monady z listy: Wypróbuj online! (33 bajty).Japt , 11 bajtów
Wypróbuj online!
Wyjaśnienie
Metoda alternatywna, 11 bajtów
Od @ETHproductions; na podstawie odpowiedzi Łuski Brutalnych Sił .
Pobiera wszystkie ogony z tablicy wejściowej i sumuje każdą z nich. Następnie spłaszcza tablicę i uzyskuje maks.
Wypróbuj online!
źródło
£sY å+Ãc rw
(także 11 bajtów)Rubin,
615957 bajtówWłaśnie zacząłem uczyć się Ruby, więc to właśnie wymyśliłem.
Pierwszy raz zobaczyłem ten algorytm w fińskiej wersji tej niedokończonej książki . Jest to bardzo dobrze wyjaśnione na stronie 23.
Wypróbuj online!
źródło
JavaScript, 58 bajtów
Implementacja algorytmu Kadane'a w golfa JS. Wykonane tak krótko, jak to możliwe. Otwarty na konstruktywne sugestie!
Czego nauczyłem się z tego postu: zwracana wartość
eval
- gdy jej ostatnią instrukcją jestfor
pętla - jest zasadniczo ostatnią wartością obecną w pętli. Fajne!EDYCJA: zapisano cztery bajty dzięki sugestiom Justina i Hermanna.
źródło
return
zastępując{...;return b;}
zeval("...;b")
ponieważ eval zwraca ostatni oświadczenie.;b
, ponieważ został on zwrócony z pętli forGaia , 6 bajtów
Wypróbuj online!
źródło
Python 2 ,
5251 bajtówWypróbuj online!
źródło
Common Lisp, 73 bajty
Wypróbuj online!
źródło
k , 14 bajtów
Wypróbuj online!
źródło
APL,
312927 bajtówWypróbuj online! (zmodyfikowany, aby działał na TryAPL)
W jaki sposób?
∊∘.{+/W[X/⍨⍺≤X←⍳⍵]}⍨⍳⍴W←⎕
Generuj sumy podwektorów⌈/
Maksymalnyźródło
CJam, 24 bajty
Funkcja, która przyjmuje tablicę liczb jako dane wejściowe.
Wypróbuj online
źródło
MY , 11 bajtów
Wypróbuj online! MY jest teraz na TIO! Łał!
W jaki sposób?
⎕
= obliczone dane wejściowe𝟚
= podwektory35ǵ'
=chr(0x53)
(Σ, suma)ƒ
= ciąg jako MOJA funkcja⇹
= mapa(
= zastosuj⍐
= maksimum↵
= wyjście z nową linią.Suma została naprawiona (
0
na pustych tablicach), aby to działało. Produkt został również naprawiony.źródło
J, 12 bajtów
Podobne do rozwiązania K zgrepa: suma skanowania wszystkich sufiksów (tworzy matrycę), zetrzyj, weź maks
Wypróbuj online!
UWAGA
za niewiele więcej bajtów, możesz uzyskać wydajne rozwiązanie (19 bajtów golfowych):
źródło
Aksjomat, 127 bajtów
Byłoby to O (# a ^ 3) Algo; Kopiuję go z wyników C ++ one ...
źródło
Scala, 105 bajtów
Nie znalazłem lepszego sposobu na generowanie tablic
listpodrzędnych .źródło
Java 8, 242 bajty
Wypróbuj tutaj.
106 bajtów bez użycia wymagania STDIN / STDOUT ..>.>
Wypróbuj tutaj.
Wyjaśnienie:
źródło