博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(转载)博弈汇总【巴什博奕,威佐夫博弈,尼姆博弈,斐波那契博弈】
阅读量:4966 次
发布时间:2019-06-12

本文共 1943 字,大约阅读时间需要 6 分钟。

以下内容全部转载自

巴什博弈

A和B一块报数,每人每次报最少1个,最多报4个,看谁先报到30。这应该是最古老的关于巴什博奕的游戏了吧。

其实如果知道原理,这游戏一点运气成分都没有,只和先手后手有关,比如第一次报数,A报k个数,那么B报5-k个数,那么B报数之后问题就变为,A和B一块报数,看谁先报到25了,进而变为20,15,10,5,当到5的时候,不管A怎么报数,最后一个数肯定是B报的,可以看出,作为后手的B在个游戏中是不会输的。

那么如果我们要报n个数,每次最少报一个,最多报m个,我们可以找到这么一个整数k和r,使n=k*(m+1)+r,代入上面的例子我们就可以知道,如果r=0,那么先手必败;否则,先手必胜。

巴什博奕:只有一堆n个物品,两个人轮流从中取物,规定每次最少取一个,最多取m个,最后取光者为胜。

代码如下:

#include 
using namespace std; int main() { int n,m; while(cin>>n>>m) if(n%(m+1)==0) cout<<"后手必胜"<

例题有:HDU4764 Stone:

题目大意:Tang和Jiang轮流写数字,Tang先写,每次写的数x满足1<=x<=k,Jiang每次写的数y满足1<=y-x<=k,谁先写到不小于n的数算输。

结论:r=(n-1)%(k+1),r=0时Jiang胜,否则Tang胜。

威佐夫博弈

有两堆各若干的物品,两人轮流从其中一堆取至少一件物品,至多不限,或从两堆中同时取相同件物品,规定最后取完者胜利。

直接说结论了,若两堆物品的初始值为(x,y),且x<y,则另z=y-x;

记w=(int)[((sqrt(5)+1)/2)*z ];

若w=x,则先手必败,否则先手必胜。

代码如下:

#include 
#include
#include
using namespace std;int main(){ int n1,n2,temp; while(cin>>n1>>n2) { if(n1>n2) swap(n1,n2); temp=floor((n2-n1)*(1+sqrt(5.0))/2.0); if(temp==n1) cout<<"后手必胜"<

尼姆博弈

尼姆博弈指的是这样一个博弈游戏:有任意堆物品,每堆物品的个数是任意的,双方轮流从中取物品,每一次只能从一堆物品中取部分或全部物品,最少取一件,取到最后一件物品的人获胜。

结论就是:把每堆物品数全部异或起来,如果得到的值为0,那么先手必败,否则先手必胜。

代码如下:

#include 
#include
#include
using namespace std;int main(){ int n,ans,temp; while(cin>>n) { temp=0; for(int i=0;i
>ans; temp^=ans; } if(temp==0) cout<<"后手必胜"<

斐波那契博弈

有一堆物品,两人轮流取物品,先手最少取一个,至多无上限,但不能把物品取完,之后每次取的物品数不能超过上一次取的物品数的二倍且至少为一件,取走最后一件物品的人获胜。

结论是:先手胜当且仅当n不是斐波那契数(n为物品总数)

如HDU2516

#include 
#include
#include
using namespace std; const int N = 55; int f[N]; void Init() { f[0] = f[1] = 1; for(int i=2;i
>n) { if(n == 0) break; bool flag = 0; for(int i=0;i

转载于:https://www.cnblogs.com/KeepZ/p/11459924.html

你可能感兴趣的文章
【LaTeX】E喵的LaTeX新手入门教程(1)准备篇
查看>>
highcharts曲线图
查看>>
extjs动态改变样式
查看>>
PL/SQL Developer 查询的数据有乱码或者where 字段名=字段值 查不出来数据
查看>>
宏定义
查看>>
笔记:git基本操作
查看>>
生成php所需要的APNS Service pem证书的步骤
查看>>
JavaWeb之JSON
查看>>
HOT SUMMER 每天都是不一样,积极的去感受生活 C#关闭IE相应的窗口 .
查看>>
windows平台上编译mongdb-cxx-driver
查看>>
optionMenu-普通菜单使用
查看>>
2016-2017-2点集拓扑作业[本科生上课时]讲解视频
查看>>
appium(13)- server config
查看>>
IIS负载均衡-Application Request Route详解第六篇:使用失败请求跟踪规则来诊断ARR...
查看>>
管理信息系统 第三部分 作业
查看>>
[Leetcode Week13]Search a 2D Matrix
查看>>
查看端口占用cmd命令
查看>>
2019.01.17王苛震作业
查看>>
清除浮动
查看>>
PayPal(贝宝)支付接口、文档、IPN
查看>>