Вход


Главная страница >> Учебный процесс >> Задачник >> Олимпиадные задачи (с решениями) >> Разное >> Номер 12

[Назад]    [Содержание ]    [Вперед]

  


Номер 12


  Условие: Номер 12


Задача 11. Пусть А - последовательность букв. После вычеркивания одной буквы из А (в одной позиции)получили последовательность В. После вычеркивания другой буквы из А (в одной позиции) получили последовательность С. Можно ли по последовательностям B и С 1) Определить вычеркнутые буквы. 2) Определить последовательность A. Примечание: В и C могут быть получены вычеркиванием одной и той же буквы.

  Решение задачи: Номер 12


Решение задачи 11. Если последовательности B и C совпадают, то вычеркнутых букв определить нельзя. Если B и C различаются ровно в одной позиции (т.е. в A были вычеркнуты соседние буквы), то определить вычеркнутые буквы можно, а последовательность A - нет (пример: A='ABCDB', B='ACDB', C='ABDB'). Чуть-чуть упростим задачу. Уберем из начала и конца последовательностей B и C все совпадающие элементы. Получим последовательности B' и C'. Пример B='albce', C='alcde', B'='bc', C'='cd', т.к. первые два и последний символ у B и C совпадают. Если мы сможем восстановить слово, из которого получается B' и C', то мы сможем восстановить и A. Пусть B'=b1b2b3 ... bk C'=c1c2c3 ... ck. Если b1=c2=b3=c4= ... и (*) C1=b2=c3=b4= ..., то определить последовательность A нельзя, выброшенные буквы - это b1 и c1. Пример: B='abab', C='baba'. В качестве A можно взять как 'babab', так и 'ababa'). Если же (*) не выполняется, то можно найти и A, и вычеркнутые буквы. Мы находим такие элементы в B' и C', что c(i)=b(i+1) и b(i)<>c(i+1) (или c(i)<>b(i+1), а b(i)=c(i+1)), и получаем начальную строчку A=b(1) ... b(i)b(i+1)c(i+1)b(i+2) ... b(k) (или A=c(1) ... c(i)c(i+1)b(i+1)c(i+2) ... c(k)). Пример: B'='bc' C'='cd' Слово из которого получается и B' и C' - 'bcd'.

Назад



[Назад]    [Содержание ]    [Вперед]

  


  
За содержание страницы отвечает Гончарова М.Н.
©
Кафедра СПиКБ, 2002-2017