Одно из возможных решений:
L = [5,11,2,3,22,1]
K = [1,3,2]
def solution(L, K):
if len(K) == 0:
return 0
sol1 = K[0] * L[0] + solution(L[1:], K[1:])
sol2 = K[0] * L[-1] + solution(L[:-1], K[1:])
return max(sol1, sol2)
print(solution(L, K))
Отпечатки:
77
Если вы хотите увидеть, что было умножено, вы можете попробовать это:
def solution(L, K):
if len(K) == 0:
return 0, []
s1, p1 = solution(L[1:], K[1:])
s2, p2 = solution(L[:-1], K[1:])
sol1 = K[0] * L[0] + s1
sol2 = K[0] * L[-1] + s2
if sol1 > sol2:
return sol1, p1 + [(K[0], L[0])]
else:
return sol2, p2 + [(K[0], L[-1])]
print(solution(L, K))
Это печатает:
(77, [(2, 5), (3, 22), (1, 1)])