zoukankan      html  css  js  c++  java
  • Leetcode_877. 石子游戏(区间dp)

    偶数堆石子,只能从首尾取,取多的赢。
    每次操作会产生两个子状态,区间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;
            }
        }
    };
    
  • 相关阅读:
    C# 小算法1
    函数 y=x^x的分析
    随机数
    对拍
    Cube Stack
    Permutation
    一笔画问题
    康托展开&&康托逆展开
    待完成
    小错误 17/8/10
  • 原文地址:https://www.cnblogs.com/zxcoder/p/12561523.html
Copyright © 2011-2022 走看看