1class Solution {2public:3int stoneGameVII(vector<int> &S) {4int N = S.size();5vector<int> dp(N);6for (int i = N - 2; ~i; i--) {7int total = S[i];8for (int j = i + 1; j < N; j++) {9total += S[j];10dp[j] = max(total - S[i] - dp[j], total - S[j] - dp[j - 1]);11}12}13return dp[N - 1];14}15};