Задача: робот находится в углу квадрата 3×3. Нужно попасть в противоположный угол.
Уточнение модели (по умолчанию): робот может двигаться только вдоль сторон клеток сетки (то есть горизонтально или вертикально, на 1 единицу за шаг). Диагональные шаги не допускаются, если иное не указано.
- Координаты и минимальная длина пути
- Пусть начальная точка — левый нижний угол, координаты (0,0). Противоположный угол — правый верхний, координаты (3,3).
- Манхэттенская дистанция между ними: |3−0| + |3−0| = 6.
- Значит минимум 6 шагов необходимы и достаточно, чтобы добраться до противоположного угла при условии движения вдоль сторон.
- Пример кратчайшего пути
- Один из самых простых вариантов: вправо 3 раза, затем вверх 3 раза. Шаги: R, R, R, U, U, U. Это путь длиной 6, который приводит из (0,0) в (3,3).
- Все кратчайшие пути и их количество
- Любой кратчайший путь состоит из ровно 3 правых шага и 3 верхних шага, в любом порядке.
- Число таких путей равно количеству различных перестановок 3 R и 3 U: C(6,3) = 20.
- Примеры других маршрутов: RURRUU, RRURUU, RURURU, URRUUU и так далее — всего их 20 вариантов.
- Что если разрешены диагональные перемещения?
- Если бы можно было двигаться по диагонали (направление северо-восток), то можно было бы попасть за 3 шага: три диагональных шага NE из (0,0) в (3,3). Но это зависит от того, разрешено ли на задаче именно такое перемещение. В задании обычно предполагается движение вдоль сторон, поэтому такой путь не учитывается здесь.
- Общий вывод и полезная формула
- В квадрате размера n × n, если начать в одном углу и двигаться по сетке к противоположному, минимальное число шагов равно 2n.
- Количество кратчайших путей равно числу сочетаний C(2n, n) (выбрать, где в последовательности из 2n шагов поставить n шагов вправо/кнопку и n вверх).
- Для нашего случая n = 3: минимум 6 шагов, всего 20 кратчайших путей.
Если хотите, могу показать все 20 вариантов маршрутов или обсудить другие варианты задач (например, движение по периметру, или другой размер квадрата).