//从前往后,从里到外void getWinNum(vector<int> &arr){ if (arr.empty())return; int len = arr.size(); vector<vector<int>> first(len, vector<int>(len, 0)); vector<vector<int>> second(len, vector<int>(len, 0)); for (int j = 0; j < len; ++j){ first[j][j] = arr[j]; for (int i = j - 1; i >= 0; --i){ first[i][j] = max(arr[i] + second[i + 1][j], arr[j] + second[i][j - 1]); second[i][j] = min(first[i + 1][j], first[i][j - 1]); } } cout << first[0][len - 1] << endl; cout << second[0][len - 1] << endl;}//从后往前,从里到外void getWinNum(vector<int> &arr){ if (arr.empty())return; int len = arr.size(); vector<vector<int>> first(len, vector<int>(len, 0)); vector<vector<int>> second(len, vector<int>(len, 0)); for (int i = 0; i < len; ++i) first[i][i] = arr[i]; for (int i = len - 1; i >= 0; --i){ for (int j = i + 1; j < len; ++j){ first[i][j] = max(arr[i] + second[i + 1][j], arr[j] + second[i][j - 1]); second[i][j] = min(first[i + 1][j], first[i][j - 1]); } } cout << first[0][len - 1] << endl; cout << second[0][len - 1] << endl;}