Объединение последовательности символов

У меня есть проблема, и мне нужен алгоритм для ее решения.
Я не смог найти и не знаю, проблема в NP -Hard.

Проблема в том, что :у меня есть несколько последовательностей символов. Я хочу объединить их в одну последовательность, в которую включены все символы исходных последовательностей, сохраняя исходный порядок символов. Дублирующиеся символы из разных последовательностей должны быть удалены. Результирующая последовательность должна быть наименьшей возможной последовательностью.

Если одна из последовательностей — «abc», результирующая последовательность должна быть *a *b *c *, где *— последовательность из 0 или более символов. Если входными последовательностями являются 'abc' и 'cba', выход должен быть 'abcba', 'c' включается один раз, а *a *b *c *и *c *b *a *имущество сохраняется.

Пример:

Вход:

abcde
xbcaf
axdaf

Способ слияния:

a-bcde--
-xbc--af
ax--d-af

Выход:

axbcdeaf

Возможно несколько выходов, «abcd» и «cba» приведут к «abcdba», «abcbda» или «abcbad». Мне понадобится только один выход, любой выход действителен,если его длина является наименьшей возможной длиной.

Спасибо

5
задан Zeze 25 July 2012 в 20:13
поделиться