leetcodeSolution to some Leetcode problems written in C++ |
git clone git://git.dimitrijedobrota.com/leetcode.git |
Log | Files | Refs | README | LICENSE |
1406.cpp (614B)
0 class Solution {
1 public:
2 string stoneGameIII(const vector<int> &stoneValue) {
3 int n = stoneValue.size();
4 vector<int> sum(n + 1, 0), dp(n + 1, 0);
6 for (int i = n - 1; i >= 0; i--)
7 sum[i] = sum[i + 1] + stoneValue[i];
9 for (int i = n - 1; i >= 0; i--) {
10 dp[i] = stoneValue[i] + sum[i + 1] - dp[i + 1];
11 for (int k = i + 1; k < i + 3 && k < n; k++) {
12 dp[i] = max(dp[i], sum[i] - dp[k + 1]);
13 }
14 }
15 dp[0] = dp[0] * 2 - sum[0];
16 return dp[0] == 0 ? "Tie" : (dp[0] > 0 ? "Alice" : "Bob");
17 }
18 };