|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
23.11.2015, 21:33 | #1 |
Регистрация: 23.11.2015
Сообщений: 3
|
Дана последовательность нулей и единиц... (Delphi)
Здравствуйте. Задание такое: Дана последовательность нулей и единиц. Выделить в ней максимальную по длине подпоследовательность чередующихся нулей и единиц, начинающуюся с единицы. (Delphi)
Не могу ни понять, ни реализовать, как выделять и выводить эту последовательность. |
23.11.2015, 22:01 | #2 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,291
|
Я бы применил конечный автомат (https://ru.wikipedia.org/wiki/Конечный_автомат).
Хватит 3 состояний. Допустим, что считываем посимвольно последовательность нулей и единиц. Пусть максимальная длина и текущая длина подпоследовательности равны 0. Изначально находимся в нулевом состоянии. Считываем очередной символ и обрабатываем в соответствии с текущим состоянием. Нулевое состояние: максимальная длина равна максимуму из текущей и максимальной; если текущий символ 1, то текущая длина равна 0 и переход в первое состояние; если текущий символ 0, то остаемся в нулевом состоянии. Первое состояние: увеличиваем счетчик текущей длины; затем, если текущий символ 1, то переходим в нулевое состояние; если текущий символ 0, то переходим во второе состояние. Второе состояние: увеличиваем счетчик текущей длины; затем, если текущий символ 1, то переходим в первое состояние; если текущий символ 0, то переходим в нулевое состояние. В конце работы еще раз выбираем максимум из максимальной и текущей. Затем выводим чередующуюся последовательность из нулей и единиц получившейся максимальной длины, начинающуюся с единицы. Путем небольшой модификации вы можете также сохранить и индекс, с которого начинается эта подпоследовательность в исходной последовательности. Если рассматривать с точки зрения оконного приложения, то последовательность может располагаться в Memo. После работы алгоритма может выводиться сообщение, что такая подпоследовательность не найдена, а если найдена, то выделить её с помощью SelStart и SelLenght прямо в Memo.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
Последний раз редактировалось BDA; 23.11.2015 в 22:15. |
24.11.2015, 00:13 | #3 |
Регистрация: 23.11.2015
Сообщений: 3
|
А можете показать как это будет выглядеть в Delphi(консольное приложение), так я в программировании недавно и не могу понять как это будет выглядеть в виде кода.
|
24.11.2015, 00:36 | #4 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,291
|
Набросок такой:
Код:
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
Последний раз редактировалось 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 |