394. 硬幣排成線

描述

有 n 個硬幣排成一條線。兩個參賽者輪流從右邊依次拿走 1 或 2 個硬幣,直到?jīng)]有硬幣為止。拿到最后一枚硬幣的人獲勝。

請判定 先手玩家 必勝還是必敗?

若必勝, 返回 true, 否則返回 false.

樣例

樣例 1:

輸入: 1
輸出: true
樣例 2:

輸入: 4
輸出: true
解釋: 
先手玩家第一輪拿走一個硬幣, 此時還剩三個.
這時無論后手玩家拿一個還是兩個, 下一次先手玩家都可以把剩下的硬幣拿完.

思路:

dp[n]為當前硬幣數(shù)為n時先手勝或者敗,如果dp[n]=true代表先手勝利,否則代表失敗。先手勝利的條件是后手失敗,那么根據(jù)題意,后手可以表示為dp[n-1]dp[n-2],因此dp[n]=true的條件為!dp[n-1]或者!dp[n-2]。具體實現(xiàn)如下。

class Solution {
public:
    /**
     * @param n: An integer
     * @return: A boolean which equals to true if the first player will win
     */
    bool firstWillWin(int n) {
        // write your code here
        if(n==0)
        {
            return false;
        }
        vector<bool> dp(n+1,false);
        dp[1]=true;
        dp[2]=true;
        for(int i=3;i<=n;i++)
        {
            if(!dp[i-1] || !dp[i-2])
            {
                dp[i]=true;
            }
            else
            {
                dp[i]=false;
            }
        }
        return dp[n];
    }
};
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 描述 有 n 個硬幣排成一條線。兩個參賽者輪流從右邊依次拿走 1 或 2 個硬幣,直到?jīng)]有硬幣為止。拿到最后一枚硬...
    6默默Welsh閱讀 288評論 0 0
  • http://acm.hdu.edu.cn/showproblem.php?pid=1525 題意:給你兩個數(shù),每...
    Gitfan閱讀 1,082評論 0 0
  • https://vjudge.net/problem/HDU-3980題意: 兩個人在一個由 n 個玻璃珠組成的...
    Gitfan閱讀 1,164評論 0 0
  • 博弈論是很有意思的數(shù)學(xué)問題,如果能夠懂其道理,短短幾行代碼就能將其本質(zhì)表示出來。 目前我的感受就是:在一場博弈之中...
    A黃橙橙閱讀 1,487評論 0 0
  • (一)巴什博弈只有一堆n個物品,兩個人輪流從這堆物品中取物,規(guī)定每次至少取一個,最多取m個。最后取光者得勝。顯然,...
    Gitfan閱讀 1,051評論 0 0

友情鏈接更多精彩內(nèi)容