• 对局问题 ——取石子问题– 1堆(转)


    Description:

    有N粒石子,甲乙两人轮流从中拿取,一次至少拿一粒,至多拿先前对方一次所取石子数目的两倍。甲先拿,开始甲可以拿任意数目的石子(但不得拿完)。最先没有石子可拿的一方为败方。

        请问,甲能否获胜?(1 < N < 100)

    Analysis:

    用一个简单例子分析:假设有N= 4粒石子,则一开始甲最多能取3粒,用(4,3)来表示初始状态。

    如果一个状态没有子状态,是结局,则根据题目条件判定胜负

    如果一个状态的所有子状态都是先手胜,则该状态是先手败

    猜想:

    甲必败: 2 3 5 8 ……

    甲必胜: 4 6 7 ……

    设{F}为Fibonacci数列(F1=2,F2=3,FK=FK-1+FK-2

    初始时有N粒石子,若N∈{F}则先手必败,否则先手必胜

    Solution:(省略证明)

    性质1:若K≥N,则状态(N,K)先手必胜。

    性质2:若状态(N,N-1)先手必败,则状态(N,K)K< N 先手必败。(这里没怎么看明白,谁看懂了告诉我啊万分感激)

    性质3:若状态(N,K)K< N,则最后一次取走的石子数目不超过2N/3。

    结论1:状态(Fi,A) A < Fi 先手必败。

    结论2:状态(N,N-1) N不属于{F}且N>2,先手必胜。

    本文章转自pku报告,作者如有问题请联系我,一定配合删除

  • 相关阅读:
    7.Flask-上传文件和访问上传的文件
    Python 数字模块
    Django之模板语法
    decimal模块
    python中的计时器:timeit模块
    6.Flask-WTForms
    Django之ORM跨表操作
    公司 邮件 翻译 培训 长难句 16
    公司 邮件 翻译 培训 长难句 15
    公司 邮件 翻译 培训 长难句 14
  • 原文地址:https://www.cnblogs.com/eavn/p/1757647.html
Copyright © 2020-2023  润新知