![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 23.11.2015
Сообщений: 3
|
![]()
Здравствуйте. Задание такое: Дана последовательность нулей и единиц. Выделить в ней максимальную по длине подпоследовательность чередующихся нулей и единиц, начинающуюся с единицы. (Delphi)
Не могу ни понять, ни реализовать, как выделять и выводить эту последовательность. |
![]() |
![]() |
![]() |
#2 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,429
|
![]()
Я бы применил конечный автомат (https://ru.wikipedia.org/wiki/Конечный_автомат).
Хватит 3 состояний. Допустим, что считываем посимвольно последовательность нулей и единиц. Пусть максимальная длина и текущая длина подпоследовательности равны 0. Изначально находимся в нулевом состоянии. Считываем очередной символ и обрабатываем в соответствии с текущим состоянием. Нулевое состояние: максимальная длина равна максимуму из текущей и максимальной; если текущий символ 1, то текущая длина равна 0 и переход в первое состояние; если текущий символ 0, то остаемся в нулевом состоянии. Первое состояние: увеличиваем счетчик текущей длины; затем, если текущий символ 1, то переходим в нулевое состояние; если текущий символ 0, то переходим во второе состояние. Второе состояние: увеличиваем счетчик текущей длины; затем, если текущий символ 1, то переходим в первое состояние; если текущий символ 0, то переходим в нулевое состояние. В конце работы еще раз выбираем максимум из максимальной и текущей. Затем выводим чередующуюся последовательность из нулей и единиц получившейся максимальной длины, начинающуюся с единицы. Путем небольшой модификации вы можете также сохранить и индекс, с которого начинается эта подпоследовательность в исходной последовательности. Если рассматривать с точки зрения оконного приложения, то последовательность может располагаться в Memo. После работы алгоритма может выводиться сообщение, что такая подпоследовательность не найдена, а если найдена, то выделить её с помощью SelStart и SelLenght прямо в Memo.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись
![]() Последний раз редактировалось BDA; 23.11.2015 в 22:15. |
![]() |
![]() |
![]() |
#3 |
Регистрация: 23.11.2015
Сообщений: 3
|
![]()
А можете показать как это будет выглядеть в Delphi(консольное приложение), так я в программировании недавно и не могу понять как это будет выглядеть в виде кода.
|
![]() |
![]() |
![]() |
#4 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,429
|
![]()
Набросок такой:
Код:
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись
![]() Последний раз редактировалось BDA; 24.11.2015 в 00:38. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
дана строка состоящая из групп нулей и единиц. Подсчитать количества единиц в группах с нечетным количеством символов (на Delphi) | ArturBattalov | Помощь студентам | 1 | 06.10.2013 16:16 |
Дана строка их нулей и единиц.Вывести самую длинную группу. Delphi | VladGorin | Помощь студентам | 1 | 19.06.2012 01:51 |
Найти байтс наибольшим числом единиц и найти байт с наибольшим чилом нулей. Найти разность число единиц м | Beren42 | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 0 | 14.12.2010 17:44 |
Задана последовательность состоящая из единиц и нулей | valiaam55 | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 29.09.2010 17:16 |
Получите последовательность b1...bn из нулей и единиц | Я_Студент | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 04.07.2008 12:40 |