Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 Аватар для Adler
80 / 85 / 19
Регистрация: 07.05.2009
Сообщений: 336

1589. Сокобан

13.05.2009, 19:45. Показов 1763. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ограничение:
времени: 5.0 секунды
памяти: 64 МБ
Описание:
Программист Стас на время отпуска устроился поработать в японскую компьютерную фирму Thinking Rabbit. Сначала идея казалась замечательной — и на халяву съездить за границу, и заработать, и набраться опыта у японских коллег. Но оказалось, что программисты без знания японского фирме не нужны, и Стаса отправили работать кем-то вроде кладовщика (по-японски его профессию называли Soko-ban).
Стас должен наводить порядок на складе, точнее, расставлять контейнеры с грузом по местам. Каждое утро Стасу дают бумажку со схемой очередного помещения и указанием, куда надо поставить контейнеры (почему-то начальству фирмы Thinking Rabbit не важно, какой именно контейнер куда поставить, главное, чтобы все контейнеры стояли только на отмеченных местах).
Однако, расставить их не так просто. Контейнеры большие и тяжелые, так что передвигать их можно, только толкая по полу, причем сил хватает лишь на один контейнер за раз. Кстати, контейнеры еще и гладкие, поэтому их можно толкать перед собой, но невозможно, например, тянуть за собой или поворачивать. Габариты помещения точно подогнаны под размеры контейнеров, поэтому Стас не может перебраться через контейнер, протиснуться между стоящими рядом контейнерами или пролезть между контейнером и стеной — он может ходить только по свободному пространству. Поэтому наведение порядка превращается в жуткую головоломку. А если решить её не удается или контейнер случайно попадает в какой-нибудь угол, из которого его не вытащить, то Стасу не позавидуешь. Дело в том, что стены склада сплошные, без выходов. Утром Стас попадает на склад через один из люков в потолке, а выйти из помещения он может только тогда, когда выполнит свою задачу. Умная система управления откроет люк для Стаса в нужном месте.
Помогите Стасу составить план перемещения контейнеров.
Исходные данные:
На входе задана схема склада — прямоугольная сетка размером n × m (3 ≤ n, m ≤ 8). Пустое место обозначется пробелом, а объекты обозначаются следующими символами:

* # — стены
* . — пустое место, куда нужно поставить контейнер (цель)
* @ — место, откуда начинает работу Стас
* + — место, откуда начинает работу Стас, если там находится одна из целей
* $ — контейнер на пустом месте
* * — контейнер на одной из целей

Гарантируется, что схема склада задана корректно, т.е. Стас не может выйти за его пределы. Количество контейнеров совпадает с количеством целей.
Результат:Выведите строку, описывающую план перемещений Стаса, при котором он расставляет контейнеры по конечным позициям. Все перемещения записываются буквами r, l, u и d (соответствующие четырем направлениям перемещений). Если при перемещении двигается контейнер, то буквы записываются в верхнем регистре (R, L, U и D соответственно). Длина строки не должна превышать 10000 символов. Можете считать, что решение всегда существует.
Примеры 1
Code
1
2
3
4
5
6
[B]исходные данные:[/B]
[color="#000088"]########
#@  $ .#
########[/COLOR]
[B]результат:[/B]
[COLOR="Green"]rrRR[/COLOR]
Примеры 2
Code
1
2
3
4
5
6
7
8
9
10
[B]исходные данные:[/B]
[COLOR="#000088"] ######
##   .#
#@  ###
#   * #
#   $ #
#     #
#######[/COLOR]
[B]результат:[/B]
[COLOR="Green"]dddrrrruLdlUUUluRR[/COLOR]
Автор задачи: Станислав Васильев и Сергей Пупырев
Источник задачи: ACM ICPC 2007–2008. NEERC. Восточный подрегион. Екатеринбург, 27 октября 2007 г.


ЗЫ: Очень интересная задачка. Кто-нибудь в курсе как её решать?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.05.2009, 19:45
Ответы с готовыми решениями:

Сокобан на С++
Ребят, пишу курсовую на С++, игру Сокобан юзая Win 32 Api, может у когото есть желание помочь, или есть простенькие примеры этой игры(уж...

Сокобан, и построение дерева решений
Добрый вечер, уважаемые форумчане. Нужна помощь с лабой, которую я реально не могу самостоятельно оформить: Задание -...

Задача "Сокобан"
Ограничение времени: 5.0 секунды Ограничение памяти: 64 МБ Программист Стас на время отпуска устроился поработать в японскую...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.05.2009, 19:45
Помогаю со студенческими работами здесь

ИИ (Бот) для игры Сокобан
Подскажите как можно зделать бота для поиска пути( наименьшего пути) для прохождения уровня к примеру в игре сокобан слышал о (Поиске в...

Бот (ИИ) для игры Сокобан
Подскажите как можно зделать бота для поиска пути( наименьшего пути) для прохождения уровня к примеру в игре сокобан слышал о (Поиске в...

Курсовик-игра сокобан(грузчик)
Здравствуйте форумчане,мне был дан курсовик -написать игру *грузчик* смысл каторой заключается в том что : 1)дан грузчик это тот кем вы...

Сокобан/грузчик/ящики на PASCALABC.net
Здравствуйте, помогите пожалуйста написать самую простую программу сокобан/ящики/грузчик везде разные названия на паскале. В графАБС. Я...

Рандомные уровни для игры Сокобан
Я пишу сейчас игру Сокобан, и мне нужно, чтобы уровни генерировались случайно, но по заданным настройкам, например: Игровое поле:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru