Leetcode PHP题解--D64 292. Nim Game

栏目: PHP · 发布时间: 7年前

内容简介:假设你和朋友玩一个捡石头的游戏,你和朋友轮流拿1~3颗石头。拿到最后一颗石头的一方为剩方。第一轮由你开始捡石头。同时假设你和你的朋友都足够聪明,每次都能采取最优策略。

D64 292. Nim Game

题目链接

292. Nim Game

题目分析

假设你和朋友玩一个捡石头的游戏,你和朋友轮流拿1~3颗石头。拿到最后一颗石头的一方为剩方。第一轮由你开始捡石头。

同时假设你和你的朋友都足够聪明,每次都能采取最优策略。

现给定一个石头数量,判断你最终是否能取得胜利。

思路

我们先从少一点开始推广到n个石头。

如果有1~3颗石头,因为规定了是你开始、还假设会采取最优策略,那么你是能获胜的。也即,对方不会在拿走石头后剩下1

假设有4颗石头。

你拿1颗,会剩下3颗。对方全拿, 对方赢 。

你拿2颗,会剩下2颗。对方全拿, 对方赢 。

你拿3颗,会剩下1颗。对方全拿, 对方赢 。

即,怎么拿都是你输。

假设有5颗石头。

你拿1颗,会剩下4颗。

对方拿走1颗,剩下3颗给你,你全拿,你赢。

对方拿走2颗,剩下2颗给你,你全拿,你赢。

对方拿走3颗,剩下1颗给你,你全拿,你赢。

你拿2颗,会剩下3颗。对方全拿, 对方赢 。

你拿3颗,会剩下2颗。对方全拿, 对方赢 。

因此,这一轮你会选择拿1颗,剩下4颗。

假设有6颗石头。

你拿1颗,会剩下5颗。

对方拿走1颗,剩下4颗给你,参考一开始就只有4颗的情况, 对方赢 。

对方拿走2颗,剩下3颗给你,你全拿,你赢。

对方拿走3颗,剩下2颗给你,你全拿,你赢。

你拿2颗,会剩下4颗。

对方拿走1颗,剩下3颗给你,你全拿,你赢。

对方拿走2颗,剩下2颗给你,你全拿,你赢。

对方拿走3颗,剩下1颗给你,你全拿,你赢。

你拿3颗,会剩下3颗。对方全拿, 对方赢 。

因此,这一轮你会选择拿2颗,剩下4颗。

假设有7颗石头。

你拿1颗,会剩下6颗。

对方拿走1颗,剩下5颗给你,参考一开始就只有5颗的情况,你赢。

对方拿走2颗,剩下4颗给你, 对方赢 。

对方拿走3颗,剩下3颗给你,你全拿,你赢。

你拿2颗,会剩下5颗。

对方拿走1颗,剩下4颗给你, 对方赢 。

对方拿走2颗,剩下3颗给你,你全拿,你赢。

对方拿走3颗,剩下2颗给你,你全拿,你赢。

你拿3颗,会剩下4颗。

对方拿走1颗,剩下3颗给你,你全拿,你赢。

对方拿走2颗,剩下2颗给你,你全拿,你赢。

对方拿走3颗,剩下1颗给你,你全拿,你赢。

因此,这一轮你会选择拿3颗,剩下4颗。

假设有8颗石头。

你拿1颗,会剩下7颗。

对方拿走1颗,剩下6颗给你,参考一开始就只有6颗的情况,你赢。

对方拿走2颗,剩下5颗给你,参考一开始就只有5颗的情况,你赢。

对方拿走3颗,剩下4颗给你, 对方赢 。

你拿2颗,会剩下6颗。

对方拿走1颗,剩下5颗给你,你赢。

对方拿走2颗,剩下4颗给你, 对方赢。

对方拿走3颗,剩下3颗给你,你全拿,你赢。

你拿3颗,会剩下5颗。

对方拿走1颗,剩下4颗给你, 对方赢。

对方拿走2颗,剩下3颗给你,你全拿,你赢。

对方拿走3颗,剩下2颗给你,你全拿,你赢。

因此,必输无疑。

我们可以得出规律。当剩下的石头为4的整数倍、双方都采取最优策略时,先下手的一方为输家。

因此这个题目就很简单了,只要判断给定的数字是否是4的整数倍即可。

最终代码

<?php
class Solution {

    /**
     * @param Integer $n
     * @return Boolean
     */
    function canWinNim($n) {
        return $n%4!=0;
    }
}

若觉得本文章对你有用,欢迎用 爱发电 资助。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。

程式之美-微軟技術面試心得

程式之美-微軟技術面試心得

編程之美小 / 悅知文化 / 2008.06.20 / 490元

書內容分為以下幾個部分: ▓ 遊戲之樂:從遊戲和其他有趣問題出發,化繁為簡,分析總結。 ▓ 數字之魅:程式設計的過程實際上就是和數字及字元打交道的過程。這一部分收集了一些這方面的有趣探討。 ▓ 結構之法:彙集了常見的對字串、鏈表、佇列,以及樹進行操作的題目。 ▓ 數學之趣:列舉了一些不需要寫具體程式的數學問題,鍛煉讀者的抽象思考能力。 ▓ 書中絕大部分題目都提供了詳細......一起来看看 《程式之美-微軟技術面試心得》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具