specificazione
Questa sfida è semplice da dichiarare: il tuo input è un array non vuoto di numeri interi non negativi e il tuo compito è dividerlo in quante meno sottosequenze crescenti possibili. Più formalmente, se l'array di input è A
, l'output è un array di array B
tale che:
- Ciascuna
B
forma in una partizioneA
in sottosezioni disgiunte (non necessariamente contigue). Induttivamente, ciò significa che oB
è l'array singleton contenenteA
, o il primo elemento diB
è una sottosequenza diA
e il resto forma una partizioneA
con quella sottosezione rimossa. - Ogni array in
B
(non necessariamente strettamente) sta aumentando. - Il numero di array in
B
è minimo.
Sia l'input che l'output possono essere presi nel formato array nativo della tua lingua. Si noti che potrebbero esserci diverse uscite corrette.
Esempio
Considera l'array di input A = [1,2,1,2,5,4,7,1]
. Un possibile output è B = [[1],[1,2,4,7],[1,2,5]]
. La condizione di partizione è evidente da questo diagramma:
A 1 2 1 2 5 4 7 1
B[0] 1
B[1] 1 2 4 7
B[2] 1 2 5
Inoltre, ogni array in B
aumento. Infine, A
non può essere suddiviso in due sottosequenze crescenti, quindi anche la lunghezza di B
è minima. Quindi è un output valido.
Regole e punteggio
È possibile scrivere una funzione o un programma completo. Vince il conteggio di byte più basso e non sono consentite scappatoie standard. Non vi è alcun limite di tempo, ma è necessario valutare la soluzione su tutti i casi di test prima di inviarlo.
Casi test
Viene mostrato un solo output possibile, ma potrebbero esserci diverse opzioni valide. In particolare, l'ordine degli array nel risultato non ha importanza (ma ogni singolo array dovrebbe essere in ordine crescente).
[0] -> [[0]]
[3,5,8] -> [[3,5,8]]
[2,2,2,2] -> [[2,2,2,2]]
[1154,1012,976,845] -> [[845],[976],[1012],[1154]]
[6,32,1,2,34,8] -> [[1,2,8],[6,32,34]]
[1,12,1,12,1,13] -> [[1,1,1,13],[12,12]]
[6,4,6,13,18,0,3] -> [[0,3],[4,6,13,18],[6]]
[1,2,3,2,3,4,7,1] -> [[1,1],[2,2,3,4,7],[3]]
[0,9,2,7,4,5,6,3,8] -> [[0,2,3,8],[4,5,6],[7],[9]]
[7,1,17,15,17,2,15,1,6] -> [[1,1,6],[2,15],[7,15,17],[17]]
[4,12,2,10,15,2,2,19,16,12] -> [[2,2,2,12],[4,10,15,16],[12,19]]
[10,13,9,2,11,1,10,17,19,1] -> [[1,1],[2,10,17,19],[9,11],[10,13]]
[3,7,3,8,14,16,19,15,16,2] -> [[2],[3,3,8,14,15,16],[7,16,19]]
[15,5,13,13,15,9,4,2,2,17] -> [[2,2,17],[4],[5,9],[13,13,15],[15]]
B
, spero che siano più chiare ora.
[0,5,2,0] -> [[0,5],[0,2]]
(cioè riciclare il primo zero invece di usarle una volta sola). È intenzionale?