博弈论-巴什博奕

博弈论-巴什博奕

一概述:

两个顶尖聪明的人在玩游戏,有n个石子,每人可以随便拿1~m个石子,不能拿的人为败者,问谁会胜利。
巴什博奕是博弈论问题中基础的问题,它是最简单的一种情形对应一种状态的博弈。

二博弈分析:

首先先列举一下可能的情况:
  1. 有1~m个石子时,毫无疑问先手必胜,因为先手可以把所有的石子全部拿走。
  2. 有m+1个石子时,则后手必胜,因为先手无论拿多少个,后手都必定能把所有的石子全部拿走,所有后手必胜。
  3. 有k*(m+1)个石子时,共有k个m+1多个石子,对于每m+1个石子,先手取i个,那么后手一定能拿走全部的m+1-i个,最终k次后,仍是后手必胜。
  4. 当有k*(m+1)+x(0 < x < m+1 )时,先手先拿x个,这样局势就又变成了第三种情况了,对于每m+1个石子,无论后手取多少个,先手都能拿走m+1-i个石子,最终先手必胜
结论:
  • 当石子为k(m+1)+x时
    取走一定石子后,剩下的石子为k
    (m+1)时,先手必胜。
  • 当石子为k*(m+1),即n能被m+1整除时,后手必胜。

三代码:

#include<iostream>
using namespace std;
int main(){
    int n,m;
    cin>>n>>m;
    if(n%(m+1)==0)
        cout<<"second"<<endl;
    else
        cout<<"first"<<endl;
    return 0;
}
posted @ 2020-10-09 01:08  meguriri  阅读(754)  评论(0)    收藏  举报