硬幣排成線

2021-10-10 20:21:07 字數 590 閱讀 2135

題目:

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

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

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

樣例樣例 1:

輸入: 1

輸出: true

樣例 2:

輸入: 4

輸出: true

解釋:先手玩家第一輪拿走乙個硬幣, 此時還剩三個.

這時無論後手玩家拿乙個還是兩個, 下一次先手玩家都可以把剩下的硬幣拿完.

解題思路:博弈型動態規劃,首先從只剩一枚硬幣開始思考,只有一枚硬幣時則必勝,同理只有兩枚硬幣時也是必勝,而只有三枚硬幣時則必敗,因為無論怎麼取都會剩下硬幣,而且剩下的數目下一輪就可以全拿完。當只有n枚硬幣時,如果只剩n - 1或者 n - 2的情況下有必勝(也就意味著對手必勝)那麼說明只剩n枚硬幣時必敗,只有當n - 1或者 n - 2的情況都是必敗則只剩n枚硬幣時必勝

public

class

solution

return dp[n];}

}

lintcode 硬幣排成線

有 n 個硬幣排成一條線。兩個參賽者輪流從右邊依次拿走 1 或 2 個硬幣,直到沒有硬幣為止。拿到最後一枚硬幣的人獲勝。請判定 先手玩家 必勝還是必敗?若必勝,返回 true,否則返回 false.輸入 4 輸出 true 解釋 先手玩家第一輪拿走乙個硬幣,此時還剩三個.這時無論後手玩家拿乙個還是兩...

lintcode 硬幣排成線2

有 n 個不同價值的硬幣排成一條線。兩個參賽者輪流從 左邊 依次拿走 1 或 2 個硬幣,直到沒有硬幣為止。計算兩個人分別拿到的硬幣總價值,價值高的人獲勝。請判定 先手玩家 必勝還是必敗?若必勝,返回 true,否則返回 false.樣例 1 輸入 1,2,2 輸出 true 解釋 先手玩家直接拿走...

395 硬幣排成線 II

中文english 有n個不同價值的硬幣排成一條線。兩個參賽者輪流從 左邊 依次拿走 1 或 2 個硬幣,直到沒有硬幣為止。計算兩個人分別拿到的硬幣總價值,價值高的人獲勝。請判定 先手玩家 必勝還是必敗?若必勝,返回true,否則返回false.樣例 1 輸入 1,2,2 輸出 true 解釋 先手...