Помогите составить алгоритм на python для подбора значений

Есть такое выражение:

res = a[i] * b[j] + b[i] * a[j]

при этом 1 <= i < j <= n. a и b - два массива. n - целое число, количество элементов в массиве, вводиться пользователем. Необходимо найти такие значения i и j, чтобы результат выражения был максимальным. Таблицы значений(рассчитаны вручную):

n = 3
  a = 5, 4, 6
  b = 1, 2, 3
результат = 24
n = 5
  a = 2 3 4 4 5
  b = 5 4 4 3 1
результат = 28

Заранее спасибо за внимание!!


Ответы (2 шт):

Автор решения: roddar92

Для одного массива алгоритм будет прост:

arr1 = [2, 1, 5, 3, 8, -1, 3]
arr2 = [-1, 3, 5, 6, 0, -1, 5]

max_product, i_pos, j_pos = arr1[0], 0, 0
for i, el in enumerate(arr1):
    for j, el2 in enumerate(arr2):
        if el * el2 + arr1[j] * arr2[i] > max_product:
            max_product = el * el2 + arr1[j] * arr2[i]
            i_pos, j_pos = i, j

print(i_pos, j_pos, max_product)

Ответ: 2, 2, 50

→ Ссылка
Автор решения: Harry

Я бы все же делал так (в меру моего незнания python):

mx = arr1[0]*arr2[1]+arr2[0]*arr1[1]
ip = 0
jp = 1
for i in range(0, len(arr1)):
    for j in range(i+1, len(arr2)):
        r = arr1[i]*arr2[j]+arr2[i]*arr1[j]
        if r > mx:
            mx = r
            ip = i
            jp = j
print(ip,jp,mx)

Просто для сравнения с ответом roddar92 - судите о правильности сами - https://ideone.com/bHNQYT

→ Ссылка