[LeetCode] 877、石ゲーム

タイトル説明

ゲーム内のいくつかの石を持つアレックスとリー・ヒープ。重ね偶数石行には、石片を各パイル正の整数ですpiles[i]

誰が勝者を決定するための最も石でゲームを持っています。石の合計数には引き分けがない、奇妙です。

アレックスとリーはターンを取る、アレックスが最初に開始します。各ターンでは、プレイヤーは、行の先頭や末尾から石の全体の杭を奪います。この状況は、石の勝利の手のほとんどを、その時点でこれ以上の石の山、まで続きました。

アレックスがゲームに勝つために戻ったとき、アレックス・リーの仮定は、最高のレベルを再生し、trueリーは試合に勝つために戻ったとき、false

输入:[5,3,4,5]
输出:true

問題解決のアイデア:この質問に対する解決策(とさえコード)と486個の質問の髪と同じ。「ギャングlabuladong何ここを見てゲームの一般的な問題解決するために、動的なプログラミングのアイデアをボタン」。

参照コード

class Solution {
public:
    bool stoneGame(vector<int>& piles) {
        int length = piles.size();
        if(length <= 1)
            return true;
        
        vector<vector<int> > dp(length, vector<int>(length, 0));
        for(int i = 0; i < length; i++)
            dp[i][i] = piles[i];
        for(int i = length-2; i >= 0; i--){
            for(int j = i+1; j < length; j++){
                dp[i][j] = max(piles[i] - dp[i+1][j], piles[j] - dp[i][j-1]);
            }
        }
        
        return dp[0][length-1] >= 0;
    }
};
415元記事公開 ウォンの賞賛603 ビュー150,000 +を

おすすめ

転載: blog.csdn.net/ft_sunshine/article/details/104056896