![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 05.11.2011
Сообщений: 17
|
![]()
Заданы z и y - две последовательности. Можно ли получить последовательность z вычеркиванием элементов из Y
Помогите с кодом,плиз... |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 25.10.2011
Сообщений: 3,178
|
![]()
Идея:
Два курсора - по последовательности z, по последовательности y. Если *z (элемент под курсором z) совпадает с *y, смещаем оба курсора на одну позицию. Если не совпадают, значит, при приведении этот элемент y надо будет вычеркнуть - смещаем курсор по y на одну позицию. Если мы так ушли за пределы массива z - значит, все его элементы, и именно в таком порядке, нашлись в массиве y. Если же мы раньше исчерпали y - увы, z не получится. Тестовые примеры: Y: 1,2,3,4,5,6,7 Z: 1,2,3,4,5,6,7 Y: 1,2,3,1,3,2,1 Z: 1,2,1,3,1,2 Y: 1,2,3,4,5,6,7 Z: 1,3,5,6,7 |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 05.11.2011
Сообщений: 17
|
![]()
Пусть z есть массив из N элементов, y - из M. Положим i=1 и
j=1. Берем элемент z[i] и ищем минимальное k, k>=j, k<=M, такое что y[k]=z[i] (мы находим очередной совпадающий символ в строках z и y). Полагаем i=i+1 и j=k+1. Повторяем поиск элемента z[i] в оставшемся куске последовательности y. Условия окончания поиска: a) Если i стало больше N (т.е. все элементы массива z явля- ются подпоследовательностью элементов y), - и тогда z можно полу- чить вычеркиванием элементов из y. б) Если в оставшимся куске последовательности y не найдено элемента, совпадающего с очередным z[i], то z из y получить нель- зя. Проблема с написанием кода... |
![]() |
![]() |
![]() |
#4 | |
Старожил
Регистрация: 25.10.2011
Сообщений: 3,178
|
![]() Цитата:
Код:
Попробуйте в виде таких же комментариев написать свой алгоритм. |
|
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 05.11.2011
Сообщений: 17
|
![]()
Напишите свой код, если можно.
|
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 02.02.2010
Сообщений: 599
|
![]() Код:
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
|
![]() |
![]() |
![]() |
#7 | ||
Старожил
Регистрация: 25.10.2011
Сообщений: 3,178
|
![]() Цитата:
Цитата:
|
||
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 05.11.2011
Сообщений: 17
|
![]()
Не обладаю достаточными навыками, только учусь.
Не много не понял в начале: //Функция проверки, можно ли в последовательности y выделить подпоследовательность z //аргументы - y, "длина y", z, "длина z" //Возвращается true, если в y можно выделить z и false иначе Напишите начало кода, а дальше попробую сам. Заранее спасибо! |
![]() |
![]() |
![]() |
#9 |
Старожил
Регистрация: 25.10.2011
Сообщений: 3,178
|
![]()
Имелось в виду, что это заголовок функции и общее описание результата её работы. Увы, реальные типы зависят от того, что за элементы в последовательности. Положим, целые числа, влезающие в int.
Также предполагаю, что компилятор у Вас понимает bool, true, false. Если нет, заменить их на int, 1, 0 соответственно. Код:
Последний раз редактировалось Abstraction; 06.11.2011 в 00:58. |
![]() |
![]() |
![]() |
#10 |
Пользователь
Регистрация: 05.11.2011
Сообщений: 17
|
![]()
курсор z и курсор y подразумевается как два цикла?
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Задача по С++ | krasotochka | Помощь студентам | 1 | 07.09.2011 22:28 |
Задача минимизации дисбаланса на линии сборки (задача минимакса) | LenZab | Microsoft Office Excel | 13 | 13.03.2011 22:51 |
Задача | Виталя5230 | Помощь студентам | 4 | 20.10.2010 16:57 |