Опис виклику
Доміно - це гра, яку грають плитки з двома значеннями на ній - одне зліва, одне праворуч, наприклад [2|4]або [4|5]. Дві плитки можна з'єднати разом, якщо вони містять загальне значення. Дві плитки вище можна з'єднати так:
[2|4][4|5]
Ми будемо називати послідовність nз'єднаних плиток ланцюжком довжиною n. Звичайно, плитки можна повертати, так що плитки [1|2], [1|3]і [5|3]можуть бути змінені в ланцюжок [2|1][1|3][3|5]довжиною 3.
Давши список пар цілих чисел, визначте довжину найдовшої ланцюга, яку можна сформувати за допомогою цих плиток. Якщо список порожній, правильна відповідь 0(зауважте, що завжди можна сформувати ланцюжок довжини 1з не порожнього списку плиток).
Зразок вводу / виводу
[(0, -1), (1, -1), (0, 3), (3, 0), (3, 1), (-2, -1), (0, -1), (2, -2), (-1, 2), (3, -3)] -> 10
([-1|0][0|-1][-1|2][2|-2][-2|-1][-1|1][1|3][3|0][0|3][3|-3])
[(17, -7), (4, -9), (12, -3), (-17, -17), (14, -10), (-6, 17), (-16, 5), (-3, -16), (-16, 19), (12, -8)] -> 4
([5|-16][-16|-3][-3|12][12|-8])
[(1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)] -> 7
([1|1][1|1][1|1][1|1][1|1][1|1][1|1])
[(0, 1), (2, 3), (4, 5), (6, 7), (8, 9), (10, 11)] -> 1
(any chain of length 1)
[] -> 0
(no chain can be formed)
O(n!)
I guess it's P