leetCode 877. Stone Game

一堆石头,用一个数组表示各堆石头大小,alice和lee选,都只能从头或尾选石头,谁的大就谁赢。求:是否一定能找到赢的方法

class Solution {
public:
    bool stoneGame(vector& piles) {
        int t=piles.size();
        vector >dp(t+1,vector(t,0));
        //dp[i][j]为从第i堆石头到第j堆石头中alice跟lee选择的石头差值的最大值
        //最终需要求的值是dp[0][t-1],这需要知道dp[0][t-2](即第一种可能:alice选的是最后一个石头)和dp[1][t-1](即另一种可能:alice选的是第一个石头),依次类推,发现对角线上的值是要事先要知道的,且大小为第i堆石头的大小
        for(int i=0;i=0;i--)
            for(int j=i+1;j0;
    }
};

 

你可能感兴趣的:(动态规划)