![]() |
VOOZH | about |
Consider a row of n coins of values v1 . . . vn, where n is even. We play a game against an opponent by alternating turns. In each turn, a player selects either the first or last coin from the row, removes it from the row permanently, and receives the value of the coin. Determine the maximum possible amount of money we can definitely win if we move first.
Also, print the sequence of moves in the optimal game. As many sequences of moves may lead to the optimal answer, you may print any valid sequence.
Before the sequence, the part is already discussed in these articles.
Examples:
Input: 10 80 90 30
Output: 110 RRRL
Explanation:
P1 picks 30, P2 picks 90, P1 picks 80 and finally P2 picks 10.
Score obtained by P1 is 80 + 30 = 110
Max possible score for player 1 is : 110
Optimal game moves are : RRRLInput: 10 100 10
Output: 20 RRL
Approach:
In each turn(except the last) a player will have two options either to pick the bag on the left or to pick the bag on the right of the row. Our focus is to evaluate the maximum score attainable by P1, let it be S. P1 would like to choose the maximum possible score in his turn whereas P2 would like to choose the minimum score possible for P1.
So P1 focuses on maximizing S, while P2 focuses on minimizing S.
Naive Approach:
Below is the implementation of the above approach:
110 RRRL
The time complexity of the above approach is exponential.
Optimal Approach:
We can solve this problem by using dynamic programming in time and space complexity.
Below is the implementation of the above approach:
110 RRRL
Time and space complexities of this approach are .