Introdução:
Inspirado por essas duas perguntas do SO (sem dúvida da mesma classe): imprima os elementos na sub -matriz de soma máxima sem elementos adjacentes java e Soma máxima de elementos não adjacentes de uma matriz, a serem impressos .
Desafio:
Dada uma lista de números inteiros, imprima uma subsequência que consiste em elementos não adjacentes que possuem a soma mais alta. Aqui estão alguns exemplos:
[1,2,3,-1,-3,2,5]
resultaria em[1,3,5]
(com uma soma de9
) nos índices baseados em 0[0,2,6]
.[4,5,4,3]
resultaria em[4,4]
(com uma soma de8
) nos índices baseados em 0[0,2]
ou[5,3]
(também com uma soma de8
) nos índices baseados em 0[1,3]
.[5,5,10,100,10,5]
resultaria em[5,100,5]
(com uma soma de110
) nos índices baseados em 0[0,3,5]
ou[1,3,5]
.
O que é mais importante sobre esses exemplos acima, os índices que contêm os elementos estão pelo menos 2 separados um do outro. Se examinarmos o exemplo [5,5,10,100,10,5]
mais detalhadamente: temos a seguinte subsequência potencial contendo itens não adjacentes; com seus índices abaixo dele; com suas somas abaixo disso:
[[5],[10],[100],[10],[5],[5],[100,5],[10,5],[10,10],[5,5],[5,10],[5,100],[5,5],[5,10],[5,100],[5,10],[5,100,5],[5,100,5],[5,10,5],[5,10,10]] // non-adjacent subsequences
[[5],[ 4],[ 3],[ 2],[1],[0],[ 3,5],[ 2,5],[ 2, 4],[1,5],[1, 4],[1, 3],[0,5],[0, 4],[0, 3],[0, 2],[1, 3,5],[0, 3,5],[0, 2,5],[0, 2, 4]] // at these 0-based indices
[ 5, 10, 100, 10, 5, 5, 105, 15, 20, 10, 15, 105, 10, 15, 105, 15, 110, 110, 20, 25] // with these sums
^ ^ // and these two maximums
Como as somas máximas são 110
, produzimos [5,100,5]
como resultado.
Regras do desafio:
- Você tem permissão para gerar pares de valores-chave do índice + valor. Portanto, em vez de
[5,100,5]
você pode produzir[[0,5],[3,100],[5,5]]
ou[[1,5],[3,100],[5,5]]
como resultado (ou[[1,5],[4,100],[6,5]]
/[[2,5],[4,100],[6,5]]
quando a indexação baseada em 1 é usada em vez de baseada em 0).- Se você usar pares de valores-chave, eles também poderão estar em ordem reversa ou aleatória, pois fica claro quais valores são devidos ao índice pareado.
- Não é permitido emitir apenas os índices sem valores. Deverá emitir os valores ou os valores / índices como pares de valores-chave (ou duas listas separadas para 'chaves' e 'valores' do mesmo tamanho se pares de valores-chave não forem possíveis no idioma de sua escolha).
- Você tem permissão para gerar todas as subsequências possíveis com a soma máxima em vez de apenas uma.
- Como você pode ver nos exemplos, a lista de entrada também pode conter valores negativos e duplicados. Você pode assumir que os números inteiros de entrada estão dentro do intervalo .
- A lista de saída não pode estar vazia e sempre deve conter pelo menos um elemento (se uma lista contiver apenas valores negativos, uma lista contendo o menor valor negativo mais baixo será exibida como resultado - consulte os dois últimos casos de teste).
- Se houver uma saída possível, mas para vários índices diferentes, é permitido gerar os dois, mesmo que pareçam duplicados. (ou seja, o exemplo acima, pode gerar
[[5,100,5],[5,100,5]]
ambas as combinações possíveis de índices).
Casos de teste:
Input: Possible outputs: At 0-based indices: With sum:
[1,2,3,-1,-3,2,5] [1,3,5] [0,2,6] 9
[4,5,4,3] [4,4]/[5,3] [0,2]/[1,3] 8
[5,5,10,100,10,5] [5,100,5] [0,3,5]/[1,3,5] 110
[10] [10] [0] 10
[1,1,1] [1,1] [0,2] 2
[-3,7,4,-2,4] [7,4] [1,4] 11
[1,7,4,-2] [7] [1] 7
[1,2,-3,-4,5,6,-7] [2,6] [1,5] 8
[800,-31,0,0,421,726] [800,726]/[800,0,726] [0,5]/[0,3,5]/[0,2,5] 1526
[-1,7,8,-5,40,40] [8,40] [2,4]/[2,5] 48
[-5,-18,-3,-1,-10] [-1] [3] -1
[0,-3,-41,0,-99,-2,0] [0]/[0,0]/[0,0,0] [0]/[3]/[6]/[0,3]/
[0,6],[3,6]/[0,3,6] 0
powerset
é um conjunto de subconjuntos, não é? mas parece que você está retornando um conjunto de subsequências? [4,5,4,3] resultaria em [4,4] onde [4,4] claramente não é um conjunto.
[5,100,5]
duas vezes para o seu terceiro exemplo.