LintCode394 硬幣排成線

問題:

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

請判定 第一個玩家 是輸還是贏?

樣例
n = 1, 返回 true.

n = 2, 返回 true.

n = 3, 返回 false.

n = 4, 返回 true.

n = 5, 返回 true.

分析:

  • 隱含假設二人都是高手,都會盡可能采取最優策略讓自己獲勝
  • 從后向前分析,即最后剩多少硬幣時第一個人可以獲勝?一定是3個。因此逐漸遞推,只要是3個一組,對方先取,就一定獲勝。
  • 唯一壞的情況就是n是3的倍數。

代碼:

bool firstWillWin(int n) {
        // write your code here
        return n%3;
    }

只有一行,竟還是中等難度。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 題目 有 n 個硬幣排成一條線。兩個參賽者輪流從右邊依次拿走 1 或 2 個硬幣,直到沒有硬幣為止。拿到最后一枚硬...
    六尺帳篷閱讀 506評論 0 2
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,969評論 19 139
  • 一、實驗目的 學習使用 weka 中的常用分類器,完成數據分類任務。 二、實驗內容 了解 weka 中 explo...
    yigoh閱讀 8,638評論 5 4
  • 你的數學直覺怎么樣?你能憑借直覺,迅速地判斷出誰的概率大,誰的概率小嗎?下面就是 26 個這樣的問題。如果你感興趣...
    cnnjzc閱讀 7,027評論 0 12
  • 21個月的洋洋,身穿老棉褲,玩起滑板車,瞬間變成炫酷小子,腳踩滑板車,一腿蹬地,滑板車快速向前滑動,而絲毫沒有害怕...
    幸福未央_Jojo閱讀 188評論 0 1