|
-1 / 0 / 0
Регистрация: 07.12.2019
Сообщений: 25
|
|
Задача на вычисление количество маршрутов09.12.2019, 21:17. Показов 5619. Ответов 4
После завершения уборки у робота-пылесоса остался низкий уровень заряда батареи и ему необходимо как можно быстрее добраться до зарядного устройства. У робота-пылесоса есть план комнаты, в которой он находится. Известно, что для удобства ориентации робота план комнаты разбит на квадраты размером в 1 корпус робота. Комната имеет прямоугольную форму и площадь X*Y квадратов. На плане есть отметки где в комнате расставлена мебель. В начале робот-пылесос находится в левом нижнем углу комнаты и для зарядки ему надо попасть в правый верхний угол комнаты. Заряда батареи робота осталось на то чтобы пройти M квадратов начиная от текущего местоположения. От вас требуется определить сможет ли робот добраться до зарядного устройства и если да то каким количеством маршрутов. Робот может перемещаться только вверх-вниз и влево-вправо. В каждую клетку можно попасть только 1 раз.
Формат входных данных Первая строчка входных данных содержит натуральные числа X, Y и М, не превосходящих 1000. Далее идет план комнаты в виде X строчек из Y символов в каждой. Один символ соответствует одному квадрату: если символ равен 1, то в квадрат можно попасть, если он равен 0, то квадрате находится препятствие в виде мебели. Первоначальное положение робота – левый нижний угол (первый символ последней строки), выход находится в правом верхнем углу (последний символ первой строки) оба этих символа равны 1. Формат выходных данных Программа должна напечатать «yes» если робот сможет добраться до зарядного устройства и количество маршрутов, ведущих к нему через M квадратов, или слово «no», если таких маршрутов не существует. Sample Input: 3 5 7 11111 10101 11111 Sample Output: yes 3
0
|
|
| 09.12.2019, 21:17 | |
|
Ответы с готовыми решениями:
4
Задача на построение маршрутов Количество маршрутов
|
|
Просто Лис
|
|
| 10.12.2019, 05:36 | |
|
Задача довольно легко решается.
1) Ставим робота в правый нижний угол. 2) Добавляем ячейку с координатами (0;0) в пройденный путь. 3) оглядываемся и, если возможно, выбираем куда двигаться (влево/вправо/вверх/вниз). 4) если вариантов несколько, то копируем пройденный путь и уже два робота двигаются по разным маршрутам. 5) повторяем шаги 3-4, проверяя, чтобы в пройденном пути координаты не повторялись. Если робот случайно добрался до цели - он останавливается. 6) После М шагов программа останавливается. 7) сравниваются пути и считаются уникальные и у которых в конце есть координата цели.
0
|
|
|
-1 / 0 / 0
Регистрация: 07.12.2019
Сообщений: 25
|
|
| 10.12.2019, 16:08 [ТС] | |
|
Хм.... Алгоритм интересный, но не знаете ли вы как его реализовать на Питоне? Просто у меня пока нет представления
0
|
|
|
-1 / 0 / 0
Регистрация: 07.12.2019
Сообщений: 25
|
|||||||
| 10.12.2019, 19:23 [ТС] | |||||||
![]() Смотрите-ка, я тут нашел программу, но она на C++. Если шарите, попрошу вашей помощи Кликните здесь для просмотра всего текста
и задачу: Кликните здесь для просмотра всего текста
Узник пытается бежать из замка, который состоит из MN квадратных комнат, расположенных в виде прямоугольника M×N. Между любыми двумя соседними комнатами есть дверь , однако некоторые комнаты закрыты и попасть в них нельзя. В начале узник находится в угловой комнате и для спасения ему надо попасть в противоположную угловую комнату. Времени у него немного, всего он может побывать не более, чем в M+N-1 комнате, включая начальную и конечную комнату на своем пути, то есть с каждым переходом в соседнюю комнату расстояние до выхода из замка должно уменьшаться. От вас требуется найти количество различных маршрутов, ведущих к спасению. Формат входных данных Первая строчка входных данных содержит натуральные числа M и N, не превосходящих 1000. Далее идет план замка в виде M строчек из N символов в каждой. Один символ соответствует одной комнате: если символ равен 1, то в комнату можно попасть, если он равен 0, то комната закрыта. Первоначальное положение узника – левый нижний угол (первый символ последней строки), выход находится в правом верхнем углу (последний символ первой строки, оба этих символа равны 1). Формат выходных данных Программа должна напечатать количество маршрутов, ведущих узника к выходу и проходящих через M+N-1 комнату, или слово impossible, если таких маршрутов не существует. Входные данные подобраны таким образом, что искомое число маршрутов не превосходит 2.000.000.000. Пример Входные данные 3 5 11111 10101 11111 Выходные данные 3 Входные данные 3 5 11101 10101 10111 Выходные данные impossible По факту, это та же самая задача, но в моей количество клеток, которое он может пройти, дано изначально, а в другой задаче оно вычисляется по формуле N+M-1. У меня возникает вопрос: где вообще счётчик там? Другая проблемка: начало в (0,0), у нас в (3,0), а конец в (3,3), у нас в (0,3). Как я понимаю можно же заменить 3-ью строчку на 1 и все, ведь так? Если поможете, буду искренне благодарен)
0
|
|||||||
| 10.12.2019, 19:23 | |
|
Помогаю со студенческими работами здесь
5
Количество маршрутов с препятствиями
Количество маршрутов в прямоугольной таблице
количество маршрутов, ведущих узника к выходу Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Оттенки серого
Argus19 18.03.2026
Оттенки серого
Нашёл в интернете 3 прекрасных модуля:
Модуль класса открытия диалога открытия/ сохранения файла на Win32 API;
Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|