Покажите свой код.
Требуется найти разбиение с
наибольшим количеством пар?
Дело в том, что разные разбиения дают разное кол-во пар.
Например, у массива [1, 2, 3, 4] существует два разбиения: {(2, 3)} и {(1, 2), (3, 4)}.
Вот пример решения (сложность O(N*log N)):
def pairs(src):
i = 0
src.sort()
result = list()
while i + 1 < len(src):
if src[i+1] - src[i] == 1:
result.append((src[i], src[i+1]))
src = src[:i] + src[i+2:]
i = max(0, i-1)
else:
i += 1
return result
src1 = [1, 5, 9, 11, 10, 4]
src2 = []
src3 = [1, 5, 2, 9, 1, 1, 4, 2, 2, 2]
print(src1, pairs(src1))
print(src2, pairs(src2))
print(src3, pairs(src3))
ps. Обращаю внимание, что функция меняет список!