Движение робота — динамическое программирование ⇐ C++
-
Гость
Движение робота — динамическое программирование
Имеется одномерный мир бесконечной длины (x), и доступные ходы (y), например [1, 2, 3, -1, -2, -3], и пункт назначения (d) (т.е. 15), напишите функцию, которая возвращает наименьшее количество ходов (результат), необходимое для достижения d.
Например, если d = 15, результат = 5. так как самый оптимальный ход - 3, а сделать его можно 5 раз.
Эта проблема очень похожа на эту: . за исключением того, что допускаются отрицательные значения.
У меня есть код ниже, который работает только для положительных чисел. Есть идеи, как заставить его работать со смешанными положительными и отрицательными значениями?
класс Решение { публика: int Robotmotion(vector &moves, int &d) { если (d == 0) вернуть 0; если (d < 0) { д = -д; for (auto &move: перемещение) move *= -1; } sort(moves.begin(), moving.end()); вектор dp(d + 1, d + 1); дп[0] = 0; for (int я = 1; я
Имеется одномерный мир бесконечной длины (x), и доступные ходы (y), например [1, 2, 3, -1, -2, -3], и пункт назначения (d) (т.е. 15), напишите функцию, которая возвращает наименьшее количество ходов (результат), необходимое для достижения d.
Например, если d = 15, результат = 5. так как самый оптимальный ход - 3, а сделать его можно 5 раз.
Эта проблема очень похожа на эту: . за исключением того, что допускаются отрицательные значения.
У меня есть код ниже, который работает только для положительных чисел. Есть идеи, как заставить его работать со смешанными положительными и отрицательными значениями?
класс Решение { публика: int Robotmotion(vector &moves, int &d) { если (d == 0) вернуть 0; если (d < 0) { д = -д; for (auto &move: перемещение) move *= -1; } sort(moves.begin(), moving.end()); вектор dp(d + 1, d + 1); дп[0] = 0; for (int я = 1; я
Мобильная версия