尼姆博弈的SG值计算简单模板
来源:互联网 发布:崩坏学园淘宝店名 编辑:程序博客网 时间:2024/05/22 02:16
#include<cstdio>#include<cstring>using namespace std;#define MAXN 111int sg[111];int get_sg(int s){ // 记忆化搜索 if(sg[s]!=-1) return sg[s]; // 不为-1,说明s的sg值已经被计算了,记忆化搜索不用再搜索计算了,直接返回已经算出来的结果 bool vis[MAXN]={0}; // 标记各个数是否被访问过,用于实现mex运算 for(int i=1; i<=s; ++i){ // 枚举取几个石子,转移到下一个局面 vis[get_sg(s-i)]=1; // 标记下一个局面s-i的sg值 } for(int i=0; ; ++i){ // 找到最小的没有被标记的非负整数,就是mex运算的实现 if(!vis[i]){ // 没有被标记 return sg[s]=i; // 当前局面的s的sg值就等于最小的没有被标记的sg值 } }}void get_sg(){ // 从小到大枚举,依次计算SG值 // 同上 for(int s=0; s<MAXN; ++s){ bool vis[MAXN]={0}; for(int i=1; i<=s; ++i){ vis[sg[s-i]]=1; } for(int i=0; ; ++i){ if(!vis[i]){ sg[s]=i; break; } } }}int main(){ memset(sg,-1,sizeof(sg)); for(int i=0; i<MAXN; ++i){ printf("%d ",get_sg(i)); } puts("\n"); get_sg(); for(int i=0; i<MAXN; ++i){ printf("%d ",get_sg(i)); } return 0;}
0 0
- 尼姆博弈的SG值计算简单模板
- 博弈sg函数模板
- 博弈SG定理模板
- HDU1536 SG博弈+尼姆博弈
- SG博弈简单题
- 尼姆博弈问题+sg函数
- POJ 2960 博弈-简单SG
- 博弈,求SG值
- 博弈,求sg值
- 博弈,求SG值
- 51nod1714(简单的博弈,SG函数)
- S-Nim + sg函数+博弈+模板
- 博弈之sg函数(模板)
- HDU-1848--博弈SG函数模板题
- 博弈论(巴什博奕,威佐夫博弈,尼姆博弈,斐波那契博弈,sg函数)
- HDU 1848 博弈 SG值
- 博弈问题及SG值
- 博弈问题及SG值
- 人物观点——Richard Wilding:网络安全改革不会一蹴而就
- python2.7 mysql.connector的安装
- 关于textbox输入限制的一点小结
- 多线程——同步函数的锁的相关问题
- JAVA 如何手动修改tomcat启动端口
- 尼姆博弈的SG值计算简单模板
- Reids的简单使用
- java异常机制
- JavaScript引用类型
- 陕西省集训day1(枚举,贪心,二分)
- poj1149PIGS【最大流】
- C语言库函数中字符处理函数集合
- HDU5858 Hard problem
- 分享数据资料