DP #32. Gold Pot Optimal Strategy - mbhushan/dynpro GitHub Wiki

(32). Gold Pot optimal Strategy.

N pots, each with some number of gold coins, are arranged in a line. 
You are playing a game against another player. You take turns picking a 
pot of gold. You may pick a pot from either end of the line, remove the pot, 
and keep the gold pieces. The player with the most gold at the end wins. 
Develop a strategy for playing this game.
Formula:

for (int len=2; len<=size; len++) {
			for (int i=0; i<=size-len; i++) {
				int j = i + len - 1;
				
				if (T[i+1][j].second + pots[i] > T[i][j-1].second + pots[j]) {
					T[i][j].first = T[i+1][j].second + pots[i] ;
					T[i][j].second = T[i+1][j].first;
					T[i][j].pick = i;
				} else {
					T[i][j].first = T[i][j-1].second + pots[j];
					T[i][j].second = T[i][j-1].first;
					T[i][j].pick = j;
				}
			}
		}
Index 0 1 2 3
gold 3 9 1 2
0 3 (3,0) (9,3) (4,9) (11,4) <- ans
1 9 (9,0) (9,1) (10,2)
2 1 (1,0) (2,1)
3 2 (2,0)

Gold Pot Strategy

  • Time Complexity: O(n^2)
  • Space Complexity: O(n^2)