Построение машины Мура

У меня есть домашнее задание:

Построить машину Мура, которая принимает строку, состоящую из букв a и b, и выводит строку, содержащую 1 в конце каждой подстроки abc и 0 во всех других позициях. например, input, aabcb производит вывод 000010

Я пытался строить, но я зашел в тупик. Вот моя попытка:введите описание изображения здесь

Как вы можете видеть, я не могу создать строку cccb, а 'abc' может вывести 0. Я чувствую, что я слишком усложнил эту простую проблему.

РЕДАКТИРОВАТЬ: сделал перерыв и переделал его. Я думаю, что это правильно, если кто-то не скажет мне иначе:

введите описание изображения здесь

2 ответа

Решение

Решение. Просто нужно четко мыслить.

Решение

Я постараюсь помочь вам, не портя ответ:

  • Почему вы используете второй цикл (нижний треугольник)?
  • Как бы вы реализовали машину, которая успешно останавливается после нахождения подпоследовательности?
  • Что нужно сделать, чтобы он работал бесконечно? Убедитесь сами, что ошибка, соответствующая подпоследовательности, эквивалентна исходному состоянию.

Я решил это, используя только четыре состояния, но, возможно, есть решение только с тремя. Должно быть ясно, что вы не можете стать лучше, чем это.

Другие вопросы по тегам