• Leetcode1025 Divisor Game


    Description

    Problem

    易错点

    assuming both players play optimally.
    Means 你需要保存一个关于N的最佳数组,每轮归谁都会是最佳的
    Then Prove N 为奇数的时候 Alice(先手)必败,N 为偶数的时候 Alice 必胜。
    1.(N=1 和 N = 2) 时结论成立。

    2.(N>2) 时,假设 (N<=k)时该结论成立,则 (N = k + 1)时:

    如果 k 为偶数,则 k + 1 为奇数,x是 k + 1的因数,只可能是奇数,而奇数减去奇数等于偶数故轮到 Bob 的时候都是偶数,故此时无论 Alice 拿走什么,Bob 都会处于必胜态,所以 Alice 处于必败态。
    如果 k 为奇数,则 k + 1 为偶数,x可以是奇数也可以是偶数,若 Alice 减去一个奇数,那么k+1−x 是一个小于等于 k 的奇数,此时 Bob 占有它,处于必败态,则 Alice 处于必胜态。
    综上所述,这个猜想是正确的。

    Code

    class Solution {
    public:
        bool divisorGame(int N) {
            return N%2==0;
        }
    };
    
  • 相关阅读:
    C#中IDisposable学习
    C# volatile与lock
    TFS源代码管理
    C#如何获取真实IP地址
    c# 协变和逆变
    基本数据类型
    用户交互
    变量.常量
    输出语句,注释,
    基础知识随笔
  • 原文地址:https://www.cnblogs.com/chanceYu/p/13371343.html
Copyright © 2020-2023  润新知