class Solution {
public:
bool PredictTheWinner(vector<int>& nums) {
int N = nums.size();
int dpA[N+1][N+1];
int dpB[N+1][N+1];
memset(dpA,0,sizeof(dpA));
memset(dpB,0,sizeof(dpB));
for(int i=0;i<N;i++){
dpA[i][i] = nums[i];
for(int j=i-1;j>=0;j--){
dpA[j][i] = max(dpB[j+1][i] + nums[j],dpB[j][i-1] + nums[i]);
dpB[j][i] = min(dpA[j+1][i],dpA[j][i-1]);
}
}
return dpA[0][N-1] >= dpB[0][N-1];
}
};
No.73 - LeetCode486 - 两端取数字 - 博弈dp - 区间dp
最新推荐文章于 2021-01-01 14:13:12 发布