|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
02.11.2013, 16:12 | #1 |
Регистрация: 24.10.2013
Сообщений: 6
|
Олимпиадная задача - восстановить направление движения робота
Програміст Вася сконструював робота, та першим ділом вирішив його протестувати. Він встановив на прямій ділянці з кінцями A та Б деяку кількість контрольних точок. Коли робот наближається до такої точки, йому передається команда і він записує її. Робот починає свій рух з одного кінця ділянки, закінчує в другій, та на кожну контрольну точку витрачає одну секунду.
По задумці Васі робот має записувати команди періодично через деякі проміжки часу. Протягом кожного періоду робот записує всі команди, що отримав, при цьому періоди не перетинаються в часі. Але після завершення тестування Вася з’ясував, що відлагодив програму погано, і йому вдалося відновити лише перші два періоди запису. Тепер він хоче з’ясувати, чи вірно він відновив дані, але не пам'ятає, з якого кінця ділянки робот почав рух. Вхідні дані: У першому рядку файлу z3.dat міститься рядок S – послідовність команд на шляху від А до Б. В другому рядку містяться записані команди s1 - за перший період запису. Третій рядок містить записані команди s2 - другий період запису. Команди задані в хронологічному порядку. Всі три рядка непусті та складаються з малих літер латинського алфавіту. Однакові літери відповідають однаковим командам, а різні - різним. Довжина рядків не менша 1 та не більша 2*104 Вихідні дані: У файл z3.sol вивести одне з чотирьох слів: "AB", Якщо робот рухався від А до Б. "BA", Якщо робот рухався від Б до А. "ABA", Якщо робот міг рухатися як від А до Б, так і від Б до А. "NO", Якщо Вася отримав помилкові дані. Приклад вхідних та вихідних даних. dbcbabbc BA cb abc aaacaaa ABA aca aa Пояснення: На шляху від Б до А точки розташовані в порядку "cbbabcbd". Послідовність "cb" була записана за перші дві секунди, а послідовність "abc" протягом секунд 4,5,6. А ось на шляху від А до Б послідовність "abc" не зустрічається жодного разу. |
03.11.2013, 02:01 | #2 |
Регистрация: 24.10.2013
Сообщений: 6
|
Программист Вася сконструировал работа , и первым делом решил его протестировать . Он установил на прямом участке с концами A и Б некоторое количество точек . Когда робот приближается к такой точке , ему передается команда и он записывает ее . Робот начинает свое движение с одного конца участка , заканчивает во второй , и на каждую контрольную точку тратит одну секунду .
По задумке Васи робот имеет записывать команды периодически через некоторые промежутки времени. В течение каждого периода робот записывает все команды, получил , при этом периоды не пересекаются во времени. Но после завершения тестирования Вася выяснил , что видлагодив программу плохо , и ему удалось восстановить только первые два периода записи . Теперь он хочет выяснить, верно он восстановил данные , но не помнит , с какого конца участка робот начал движение . Входные данные : В первой строке файла z3.dat содержит строку S - последовательность команд на пути от А к Б. Во второй строке содержатся записанные команды s1 - за первый период записи . Третья строка содержит записанные команды s2 - второй период записи . Команды заданные в хронологическом порядке. Все три строки непустые и состоят из букв латинского алфавита. Одинаковые буквы соответствуют одинаковым командам , а различные - разным. Длина строк не менее 1 и не более 2 * 104 Выходные данные: В файл z3.sol вывести одно из четырех слов: " AB " , если робот двигался от А до Б. " BA " , если робот двигался от Б к А. " ABA " , если робот мог двигаться как от А до Б , так и от Б к А. " NO " , если Вася получил ошибочные данные . Пример входных и выходных данных. dbcbabbc BA cb abc aaacaaa ABA aca aa объяснение: На пути от Б к А точки расположены в порядке "cbbabcbd". Последовательность "cb" была записана за первые две секунды, а последовательность "abc" в течение секунд 4,5,6. А вот на пути от А до Б последовательность "abc" не встречается ни разу. |
03.11.2013, 02:02 | #3 |
Регистрация: 24.10.2013
Сообщений: 6
|
Ребята погомите, пожалуйста.Трое суток уже сижу над ней. Любые идеи приветствуются.
|
03.11.2013, 02:16 | #4 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,293
|
Если я понял задание, то:
Код:
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
Последний раз редактировалось BDA; 03.11.2013 в 22:24. |
03.11.2013, 21:42 | #5 |
Регистрация: 24.10.2013
Сообщений: 6
|
раскажите, пожалуйста, что такое ab i ba i (s[ord(ab) + 2 * ord(ba)]); это как?
|
03.11.2013, 21:48 | #6 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,293
|
ab и ba - булевы переменные, которые показывают, что робот мог двигаться по соответствующему маршруту. Для краткой записи вывода нужного сообщения используется массив.
Код:
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Изменить направление движения | Monny | Общие вопросы C/C++ | 2 | 29.11.2012 15:51 |
Олимпиадная задача. | Godziller | Фриланс | 6 | 28.05.2012 14:10 |
Олимпиадная задача | Saidoz | Паскаль, Turbo Pascal, PascalABC.NET | 7 | 28.10.2011 13:02 |
Как отследить направление движения мыши? | yourself | Общие вопросы Delphi | 8 | 30.05.2008 08:04 |
Олимпиадная задача | Carbon | Общие вопросы C/C++ | 2 | 23.05.2007 22:07 |