拿硬币

作者: 丹之 | 来源:发表于2018-10-04 17:40 被阅读0次

有 n 个硬币排成一条线。两个参赛者轮流从右边依次拿走 1 或 2 个硬币,直到没有硬币为止。拿到最后一枚硬币的人获胜。
请判定 第一个玩家 是输还是赢?
样例:
n = 1, 返回 true.
n = 2, 返回 true.
n = 3, 返回 false.
n = 4, 返回 true.
n = 5, 返回 true.

public class Solution {
    /**
     * @param n: an integer
     * @return: a boolean which equals to true if the first player will win
     */
    public boolean firstWillWin(int n) {
        // write your code here
        if( ((n -2) % 3 == 0) || ((n-1) % 3 ==  0) ) {
            return true;
        }else
            return false;
    }
}

分析:如果最后一轮只剩下1个或者2个硬币的话,那么最后一个硬币总能被第一个玩家拿到!所以要保证最后一轮只剩下1个或者2个硬币就必须满足(n -2) % 3 == 0) 或者 (n-1) % 3 == 0 最后一轮之前的每一轮保证两个玩家一共拿3个硬币,所以这里 %3

相关文章

  • 拿硬币

    有 n 个硬币排成一条线。两个参赛者轮流从右边依次拿走 1 或 2 个硬币,直到没有硬币为止。拿到最后一枚硬币的人...

  • 拿硬币

    题目: 题目的理解: 每次从一个堆拿走2个硬币,如果只有一个硬币了那就拿走一个。 python实现 想看最优解法移...

  • 说赌

    小时候,我们经常玩一种游戏,游戏规则:拿一枚硬币的正反面去押赌注,拿硬币的人把硬币垂直放在光滑的桌面,使它旋转,然...

  • LeetCode题解之拿硬币

    统计位数为偶数的数字 题目描述 桌上有 n 堆力扣币,每堆的数量保存在数组 coins 中。我们每次可以选择任意一...

  • LCP 06. 拿硬币

    题目 桌上有 n 堆力扣币,每堆的数量保存在数组 coins 中。我们每次可以选择任意一堆,拿走其中的一枚或者两枚...

  • LCP-06-拿硬币

    解题思路: 挨个每项除以2,向上取整,求和; 使用divmod函数,分别得到除后值及余数。 Python3代码:

  • 游戏

    a和b的聪明人,两个人一起玩游戏:桌子上有一堆硬币,每次每人轮流拿 1 - 3 块硬币。 拿掉最后一块硬币的人获胜...

  • 经典智力题收录(二)

    更新于:2017-07-18 22:34:06 拿硬币问题 问题:16个硬币,A和B轮流拿走一些,每次拿走的个数只...

  • Leetcode-LCP 06 拿硬币

    LCP 06. 拿硬币[https://leetcode-cn.com/problems/na-ying-bi/]...

  • 硬币自取,你敢拿嘛?

    人们总是希望可以不劳而获,天降“馅饼”,但是面对真正的摆在面前的福利却又退缩胆怯。如果在街头有免费硬币你会不请自取...

网友评论

      本文标题:拿硬币

      本文链接:https://www.haomeiwen.com/subject/khgxaftx.html