Recursos-LCC

Um arquivo de todo material que consegui reunir, pertinente ao curso de LCC da UM.

View on GitHub

LA2 | Torneio 3 (2022/2023) | Duplica


'''
Optimize a seguinte função.
'''


def duplica(lista, dic={}):
    if len(lista) == 0:
        return 0
    if len(lista) == 1:
        return 2 * lista[0]

    if tuple(lista) in dic:
        return dic[tuple(lista)]

    a = lista[0] + duplica(lista[1:], dic)
    b = 2 * lista[0] + lista[1] + duplica(lista[2:], dic)
    res = max(a, b)
    dic[tuple(lista)] = res
    return res


Testes

# 1
lista = [5,1,3,4,5,3,1,3,3,5,5,1,2,3,4,5,1,3,4,5,3,1,3,3,5,5,1,2,3,4]
> Resultado = 149

# 2
lista = list(range(100))
> Resultado = 7450

# 1
lista = [5,3,2,4]
> Resultado = 23

retroceder