ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

博弈论

2022-07-25 23:35:29  阅读:151  来源: 互联网

标签:石子 游戏 int 博弈论 vis MAXN sg


博弈论

1.必胜点和必败点和sg函数定义。

image-20220713130349218

image-20220713151439691

2.单个取石子游戏。

sg值的定义就是找到一个不等于后继节点的最小非负整数。

光建就是sg函数。sg[x]=0就是p点,否则就是N点。下面是单个取石子游戏sg函数的计算方法。

image-20220621105815765

第三条求法。利用搜索求解就好。

int f[MAXN],sg[MAXN];//f是可以取得石子数
bool vis[MAXN];//代表后继中有哪些点取了,找到哪个最小的非负整数。
void getSG(int n)//求n的sg值
{
sort(f+1,f+1+n);
memset(sg,0,sizeof(sg));
for (int i=1; i<=n; i++)
{
memset(vis,0,sizeof(vis));
for (int j=1; f[j]<=i; j++)//f排序是为了让每一种取法都循环到
            //if(i-f[j]<0)break;//小于0就不用了//这个条件上面已经有了
vis[sg[i-f[j]]]=1;
for (int j=0; j<=n; j++)
{
if (vis[j]==0)
{
sg[i]=j; break;
}
}
}
}

3.组合取石子游戏

image-20220713151339816

image-20220713133902449

 

这被lcy老师称为组合游戏的并,只需要求出每个单个游戏的sg值然后异或起来就可以判断这个点是输还是赢。sg值为0是P点。为1则是N点。

4.Anti-nim

 

标签:石子,游戏,int,博弈论,vis,MAXN,sg
来源: https://www.cnblogs.com/silky----player/p/16519247.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有