Первая часть алгоритма идентифицирует для любого заданного индекса входного массива, к которому вы переходите с нечетным (oddNext
) или четным (evenNext
) прыжком. Некоторые индексы заполнены None
, потому что вы не можете делать какие-либо легальные (четные или нечетные) прыжки с них.
Если у вас есть эта информация, чтобы ответить на ваш вопрос, обратите внимание на следующее:
- Любой индекс, который может законно перейти на хороший индекс , должен быть хороший индекс (вы можете «повторно использовать» решение для этого хорошего индекса, чтобы достичь конца)
- последний индекс входного массива всегда является «хорошим индексом» (т.е. вы конец уже достигнут)
В результате вы можете перейти назад от конца массива, чтобы определить хорошие индексы , проверив, будут ли они прыгать переслать в индекс, который вы уже определили как хороший (или не очень) индекс.
Обратите внимание, что это динамическое c программирование вычислений, поскольку вы устанавливаете периодические отношения между хорошими индексами и используете их как go в обратном направлении в массиве (то есть вы решение подзадач для динамического программирования c так называемым способом «снизу вверх» согласно их структуре зависимостей).
Следует отметить, что этот алгоритм вычисляет, хорош ли индекс для каждого местоположения и каждого возможного типа прыжка (т.е. мы полностью заполняем * Массивы 1036 * и even
). Это связано с тем, что при выполнении итераций в динамических вычислениях c программирования различным начальным точкам массива может понадобиться , чтобы сделать нечетный или четный скачок из этого индекса, , даже если , когда начиная с из любого конкретного индекса, вы можете сделать это только с нечетным прыжком в соответствии с оператором задачи.
Отлично. В динамическом c программировании часто решают все подзадачи , даже если решение исходной проблемы не полагается на все из них. Обратите внимание, что это также , поэтому , в конце концов, вас интересует только то, какие индексы в массиве odd
являются хорошими. Массив even
был только частью динамического леса программирования c для заполнения массива odd
.