leetcode.1406. 石子游戏 III

1406. 石子游戏 III


图片说明



代表该玩家在区间内的最大值,那么一定是等于减去上一个玩家在区间的最小值
上一个玩家可能取了一个,两个或者三个。
所以可以有,;

class Solution {
public:
    int dp[50005];
    string stoneGameIII(vector<int>& a) {
        int sum=0,n=a.size();
        dp[n]=0;
        for(int i=n-1;i>=0;i--){
            sum+=a[i];
            int ans=dp[i+1];
            for(int j=1;j<=3&&i+j<=n;j++)
            ans=min(ans,dp[i+j]);
            dp[i]=sum-ans;
        }
        if(dp[0]==sum-dp[0])return "Tie";
        if(dp[0]>sum-dp[0])return "Alice";
        return "Bob";
    }
};
全部评论

相关推荐

zYvv:双一流加大加粗再标红,然后广投。主要是获奖荣誉不够,建议开始不用追求大厂,去别的厂子刷下实习。
点赞 评论 收藏
分享
05-22 09:23
门头沟学院 Java
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-02 18:35
简历上把1个月实习写成了3个月,会进行背调吗?
码农索隆:一个月有一个月的实习经历,三个月有三个月的实习经历
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务