Ответ 1
Вот какой-то питон, который решает проблему:
def sublist(i,l):
if i == 0:
return l[2:-1]
elif i == len(l)-1:
return l[1:-2]
else:
return l[0:i-1] + l[i+2:]
def val(l):
if len(l) <= 3:
return max(l)
else:
return max([v+val(m) for v,m in [(l[u],sublist(u,l)) for u in range(len(l))]])
def print_indices(l):
print("Total:",val(l))
while l:
vals = [v+val(m) for v,m in [(l[u],sublist(u,l)) for u in range(len(l)) if sublist(u,l)]]
if vals:
i = vals.index(max(vals))
else:
i = l.index(max(l))
print('choice:',l[i],'index:',i,'new list:',sublist(i,l))
l = sublist(i,l)
print_indices([10,3,8,12])
print_indices([10,19,10,0])
Вывод:
Всего: 18
выбор: 10 индекс: 0 новый список: [8]
выбор: 8 индекс: 0 новый список: []Всего: 20
выбор: 10 индекс: 0 новый список: [10]
выбор: 10 индекс: 0 новый список: []
Без сомнения, его можно было бы немного оптимизировать. Бит ключа val()
, который вычисляет общее значение данного кольца. Остальное - просто бухгалтерия.