zoukankan      html  css  js  c++  java
  • 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;
        }
    };
    
  • 相关阅读:
    数组元素循环右移
    备忘录模式笔记
    调度算法(笔记)
    meta http-equiv的用法(转)
    常用Maven插件介绍(下)(转)
    常用Maven插件介绍(上)(转)
    maven命令
    JDK并发包
    线程基础
    Jav堆排序
  • 原文地址:https://www.cnblogs.com/chanceYu/p/13371343.html
Copyright © 2011-2022 走看看