Основы программирования с Java. Тимур Машнин
окне.
Таким образом, вы можете видеть, что есть в общей сложности 8 решений, как обсуждалось ранее.
Давайте теперь посмотрим на 3D-версию задачи. Задача в основном такая же, как и раньше, за исключением того, что у вас есть 3x3x3 куб как кубик Рубика и с квадратным яблоком в каждой ячейке.
То есть, есть в общей сложности, есть 27 яблок. Чтобы помочь вам визуализировать проблему, диаграмма здесь отображает куб в три слоя.
Подобно тому, что у нас было раньше, червь прячется в середине, и мы должны следовать тем же правилам.
То есть, в начале, есть 6 возможных ходов, вместо 4, как в случае 2D, потому что в дополнение к 4 ячейкам на сторонах в среднем слое, червь также может перейти к средней ячейке на переднем плане и средней ячейке на заднем плане.
И теперь вопрос в том, может ли червь по-прежнему съесть все 27 яблок.
Помните, что червь не может вернуться к любым тем ячейкам, которые были захвачены ранее.
Давайте теперь вернемся и посмотрим на 2D-задачу немного по-другому. Некоторые из красных яблок заменены на зеленые яблоки, и они расположены по такой схеме.
Если червь опять должен начать с середины, следуя тем же правилам, это та же задача, как и раньше, независимо от цвета яблок, и у нас есть те же 8 решений, как и в предыдущем случае 2D.
Теперь рассмотрим, что, если вместо того, чтобы начать с середины, червь начинает с одной из ячеек на стороне, а все другие правила те же самые.
Подсказка в том, что надо посмотреть, как меняется цвет, когда червь переходит из одного яблока в другое.
Давайте теперь вернемся к задаче квадратных яблок 3D и будем чередовать цвета яблок, как мы сделали это в 2D случае.
Как и в предыдущем 3D случае червь прячется в середине.
Так что это все та же 3D задача, как и раньше, хотя цвета некоторых из яблок были изменены.
Теперь используйте то, что вы наблюдали в случае 2D, и попытайтесь придумать быстрое решение этой задачи.
Вопросы
Задача
Может ли червь съесть все 27 яблок, если он начинает от центра куба?
1. Да
2. Нет
Ответ: 2.
Задача
Может ли червь съесть все 27 яблок, если он начинается с одного из углов куба?
1. Да
2. Нет
Ответ: 1.
Из задачи 2D квадратных яблок, мы можем наблюдать, что червь сможет съесть все яблоки, если он начинает с ячейки с красным яблоком. Применяя то же правило в задаче квадратных яблок 3D, мы можем быстро сказать, что червь не сможет съесть все яблоки, если он начинает из центра куба, в котором содержится зеленое яблоко. Аналогичным образом можно быстро сказать, что червь может съесть все яблоки, если он начинает с угла куба, который содержит красное яблоко.
Важность представления задачи
В задаче 2D квадратных яблок, используя красное и зеленое представления яблок, вы увидите, что есть 5 красных яблок и 4 зеленых яблока.
Каждое движение будет чередовать яблоки