巴什博弈(Bash Game)
来源:互联网 发布:淘宝店铺基本设置在哪 编辑:程序博客网 时间:2024/06/07 23:34
巴什博弈(Bash Game)
一堆有n个的石子,A、B两人轮流从中取石子,游戏规定每人每次至少取一个至多取m个,最终取完石子的人取胜。
该类问题,直接寻找必败态。如果这堆石子小于或等于m个(即n<=m),那么先取的人一定赢,他一次便可取完所有石子;如果这堆石子等于m+1个,那么无论第一个人去多少,他都不可能一次取完石子,而第二个人则可以一次取完剩下的所有,则先手一定输;如果这堆石子数目为m+1<n<2(m+1),那么先手就可以取走n-(m+1)个石子,使得对手面对m+1的必败态,则先手一定赢。按此推导下去可以发现:如果这堆石子的数目为n=(m+1)r+s(r为任意正整数,s为整数并且s<=m),那么先手只需取走s个石子,如果后手取走k(k<=m)个石子,那么先手再取走m+1-k个,石子剩下(m+1)(r-1)个,先手以后保持这样地取法,那么先手一定赢。
结论如下:当n%(m+1)==0时,先手输,否则后手输。
对应代码如下:
//c代码#include<stdio.h>int main(){ int n,m; scanf("%d%d",&n,&m); if(n%(m+1)==0) printf("first\n"); else printf("second\n"); return 0;}
//c++代码#include<iostream>using namespace std;int main(){ int n,m; cin>>n>>m; if(n%(m+1)==0) cout<<"first"<<endl; else cout<<"second"<<endl; return 0;}
0 0
- 巴什博弈(Bash Game)
- HDU2149(巴什博弈Bash Game)
- 巴什博弈(Bash Game)
- 巴什博弈(Bash Game)
- 巴仕博弈(Bash Game)小结
- 关于博弈基础知识的总结:巴什博弈(Bash Game)、威佐夫博奕(Wythoff Game)、尼姆博奕(Nim Game)
- 关于博弈基础知识的总结:巴什博弈(Bash Game)、威佐夫博奕(Wythoff Game)、尼姆博奕(Nim Game)
- zzuoj1225 棋盘游戏 最简单的博弈——巴什博弈(bash game)
- HDU 1845 Brave Game 巴什博弈 Bash
- 理论: 博弈2: 巴什博奕(Bash Game)
- hdu1517A Multiplication Game(bash博弈)
- 博弈---巴什博奕(Bash Game)(博弈入门)
- HOJ 1846 博弈 BASH game
- [HDU](1846)Brave Game ---巴什博弈(博弈)
- HDOJ Brave Game(巴什博弈)
- Brave Game (巴什博弈)
- Good Luck in CET-4 Everybody! (巴什博弈 bash game)
- hdu 1846 Brave Game(博弈,bash game)
- java实现创建xml文件
- 赠与那些斗志昂扬却漫无目的的程序员的建议
- 数据挖掘基本概念
- iOS duplicate symbol _main in:问题解决
- hd 2017 字符串统计
- 巴什博弈(Bash Game)
- Web开发初探(二) HTML基础
- 这里实现一个基于数组的线程安全的循环队列
- hd 2565 放大的X
- 嵌入式驱动开发流程
- Java开发工具及环境配置
- hd 2017 统计字符串 逐个读取字符法注意getchar();
- Red Hat Enterprise Linux 7的新功能
- hd 3783 ZOJ