818 Race Car
Your car starts at position 0 and speed +1 on an infinite number line. (Your car can go into negative positions.)
Your car drives automatically according to a sequence of instructions A (accelerate) and R (reverse).
When you get an instruction "A", your car does the following: position += speed, speed *= 2
.
When you get an instruction "R", your car does the following: if your speed is positive then speed = -1
, otherwise speed = 1
. (Your position stays the same.)
For example, after commands "AAR", your car goes to positions 0->1->3->3, and your speed goes to 1->2->4->-1.
Now for some target position, say the length of the shortest sequence of instructions to get there.
Note:
1 <= target <= 10000
.
The Idea: Perform a BFS with added DP and tree pruning. Begin from the base position. From there we have two choices. If we ever come back to the same position AND speed, then we know we're just looping back into the tree - so ignore those. Another optimization is that from our two options, our target position will never be exceed by what twice it.
Complexity: O(2^n) time and space (absolute worse case)
Last updated