Defina o "subconjunto máximo" de um determinado conjunto como "um subconjunto (consecutivo) com a maior soma". Observe que não há um requisito "diferente de zero". Saída essa soma.
Dê uma descrição do seu código, se possível.
Entrada de amostra 1:
1 2 3 -4 -5 6 7 -8 9 10 -11 -12 -13 14
Saída de amostra 1: 24
Descrição 1:
A maior soma é obtida cortando 6 7 -8 9 10
e somando.
Exemplo de entrada 2: -1 -2 -3
Exemplo de saída 2: 0
Descrição 2: É simples :) Um subarray vazio é o "maior".
Requerimento:
- Não leia nada, exceto stdin, e a saída deve ir para stdout.
- Aplicam-se restrições de brechas padrão .
Ranking: O programa mais curto ganha esse código de golfe .
Respostas:
Casca ,
64 bytesExperimente online!
fonte
Python 3 , 61 bytes
Experimente online!
Algoritmo roubado da Wikipedia .
fonte
Pitão , 8 bytes
Experimente online!
Quão?
fonte
05AB1E , 4 bytes
Experimente online!
-1 graças a Adnan .
fonte
ÎŒOM
deve funcionar por 4 bytes.M
procura o maior número na versão nivelada da pilha.Gelatina , 6 bytes
Experimente online!
fonte
C ++,
197195187 bytes-10 bytes graças a Zacharý
fonte
l
e deh
qualquer maneira?R , 54 bytes
Experimente online!
Algoritmo retirado de: Problema máximo na sub-matriz
R , 65 bytes
Experimente online!
x
partir de stdin.y
como índice dex
.m
(inicialmentem=0
).m
.m
.R , 72 bytes
Experimente online!
x
partir de stdin.m
(inicialmentem=0
).m
.m
.Outras idéias malsucedidas
58 bytes
63 bytes
72 bytes
fonte
a=b=0
funciona também Além disso, você precisa lidar com a impressão da saída. Quando executado como um programa completo (porsource
), isso não imprime nada.cat(b)
, mas, se for fornecido comecho=TRUE
ele, será suficiente para solicitarb
impressão.T=F
em vez dea=b=0
salvar dois bytes, porquemax
vai forçarb
anumeric
.Haskell , 28 bytes
Experimente online!
fonte
scanl
? sofoldl((max<*>).(+))0
??05AB1E , 4 bytes
-2 bytes graças a Adnan
Experimente online!
fonte
ÎŒOM
deve funcionar para 4 bytesMathematica, 24 bytes
fonte
Haskell ,
4133 bytesExperimente online! graças a Laikoni
fonte
g=
. Em vez deconcatMap
você pode usar=<<
da lista mônada: Experimente online! (33 bytes).Japonês , 11 bytes
Experimente online!
Explicação
Método alternativo, 11 bytes
De @ETHproductions; baseado na resposta Husk das Forças Brutas .
Obtém todas as caudas da matriz de entrada e soma cumulativamente cada. Em seguida, nivela a matriz e obtém o máximo.
Experimente online!
fonte
£sY å+Ãc rw
(também 11 bytes)Ruby,
615957 bytesEu comecei a aprender Ruby, então é isso que eu criei.
Vi esse algoritmo pela primeira vez na versão finlandesa deste livro inacabado . Está muito bem explicado na página 23.
Experimente online!
fonte
JavaScript, 58 bytes
Implementação JS Golfed do algoritmo de Kadane. Feito o mais curto possível. Aberto a sugestões construtivas!
O que aprendi neste post: o valor de retorno de
eval
- quando sua última declaração é umfor
loop - é basicamente o último valor presente dentro do loop. Legal!EDIT: salvou quatro bytes graças às sugestões de Justin e Hermann.
fonte
return
substituindo{...;return b;}
poreval("...;b")
eval retorna a última instrução.;b
, pois ele é retornado do loop forGaia , 6 bytes
Experimente online!
fonte
Python 2 ,
5251 bytesExperimente online!
fonte
Lisp comum, 73 bytes
Experimente online!
fonte
k , 14 bytes
Experimente online!
fonte
APL,
312927 bytesExperimente online!(modificado para que seja executado no TryAPL)
Quão?
∊∘.{+/W[X/⍨⍺≤X←⍳⍵]}⍨⍳⍴W←⎕
Gerar somas de subvetores⌈/
Máximofonte
CJam, 24 bytes
Função que recebe matriz de números como entrada.
Experimente Online
fonte
MY , 11 bytes
Experimente online! MY está no TIO agora! Woohoo!
Quão?
⎕
= entrada avaliada𝟚
= subvetores35ǵ'
=chr(0x53)
(Σ, soma)ƒ
= string como uma função MY⇹
= mapa(
= aplicar⍐
= máximo↵
= saída com uma nova linha.A soma foi corrigida (
0
em matrizes vazias) para que isso funcionasse. O produto também foi corrigido.fonte
J, 12 bytes
Semelhante à solução K do zgrep: a soma da varredura de todos os sufixos (produz uma matriz), raze, take max
Experimente online!
NOTA
por menos bytes demais, você pode obter uma solução eficiente (19 bytes de golfe):
fonte
Axioma, 127 bytes
Isso seria O (# a ^ 3) Algo; Eu copio do C ++ one ... results
fonte
Scala, 105 bytes
Não encontrei uma maneira melhor de gerar as matrizes das sub-
listas.fonte
Java 8, 242 bytes
Experimente aqui.
106 bytes sem usar o requisito STDIN / STDOUT ..>.>
Experimente aqui.
Explicação:
fonte