Leetcode_877. 石子游戏(区间dp)

软件发布|下载排行|最新软件

当前位置:首页IT学院IT技术

Leetcode_877. 石子游戏(区间dp)

Keane1998   2020-03-24 我要评论

偶数堆石子,只能从首尾取,取多的赢。
每次操作会产生两个子状态,区间dp,记得先枚举长度。

code

class Solution {
public:
    int dp[505][505];
    bool stoneGame(vector<int>& piles) {
        int n=piles.size();
        int sum=0;
        for(int i=0;i<n;i++){
            sum+=piles[i];
        }
        for(int i=0;i<n;i++){
            dp[i][i]=piles[i];
        }
        for(int k=2;k<=n;k++){
            for(int i=0;i+k-1<n;i++){
                int j=i+k-1;
                int a=piles[i]+dp[i+1][j];
                int b=piles[j]+dp[i][j-1];
                dp[i][j]=max(a,b);
            }
        }
        if(sum-dp[0][n-1]<sum){
            return true;
        }else{
            return false;
        }
    }
};

Copyright 2022 版权所有 软件发布 访问手机版

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 联系我们