Алгоритм Свернуть список воспроизведения без изменения воспроизведения

Я ищу алгоритм, чтобы сократить список (плейлист) заказанные, но не уникальные товары. Искал теорию множеств, но пока не нашел ничего подходящего.

Примеры

[a, b, b, c] -> [a, b, b, c] Cannot be reduced. 
[a, b, b, a, b, b] -> [a, b, b]. 
[b, b, b, b, b] -> [b]. 
[b, b, b, b, a] -> [b, b, b, b, a] Cannot be reduced. 

Думаю о получении всех существующих подсписок и подсчете каждого экземпляра. Если существует такой подсписок, в котором количество, умноженное на длину подсписка, равно исходному списку, выберите самый короткий подсписок, соответствующий этому критерию.

Это кажется немного грубой силой, должно быть доступно более простое / быстрое решение.

5
задан John Kugelman supports Monica 28 November 2010 в 21:18
поделиться