博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 3537 Crosses and Crosses(sg博弈)
阅读量:5086 次
发布时间:2019-06-13

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

题目:在1*n 的棋盘里面,A和B都在里面画叉 , 如果谁可以画了一个叉后,可以连成3个叉,那谁胜利 ; 

 

分析: 首先考虑如果我在玩游戏,我最希望对手可以画出-x-x or  -xx-   ,  这种情况 ,也就是说玩家就一定不可画成这样给对手制造机会 ;  那可以当成画了一个叉后 就分成了 (x-3) , (x-2-i)  ,两个游戏 ,那我们可以根据SG的性质来解决这种分解游戏的游戏 

 

#include
#include
//注意 S数组要按从小到大排序 SG函数要初始化为-1 对于每个集合只需初始化1遍//n是集合s的大小 S[i]是定义的特殊取法规则的数组int s[110],sg[10010],n;int SG_dfs(int x){ int i; if(x<0) return 0; if(sg[x]!=-1) return sg[x]; bool vis[110]; memset(vis,0,sizeof(vis)); for(i=1;i<=x;i++) { vis[SG_dfs(i-3)^SG_dfs(x-2-i)]=1; } int e; for(i=0;;i++) if(!vis[i]) { e=i; break; } return sg[x]=e;}int main( ){ int n; memset(sg,-1,sizeof(sg)); while(scanf("%d",&n)!=EOF) { if(SG_dfs(n)) puts("1"); else puts("2"); }}
View Code

 

转载于:https://www.cnblogs.com/shuaihui520/p/9580374.html

你可能感兴趣的文章
ASP.NET 5探险(2):上传文件
查看>>
在ASP.NET MVC项目中使用React
查看>>
基于UML的需求分析和系统设计
查看>>
SpringMVC注解@RequestMapping之produces属性导致的406错误
查看>>
软件测试的一些基本知识
查看>>
开发版速达-提供在线帐套配置功能
查看>>
element-ui Steps步骤条组件源码分析整理笔记(九)
查看>>
PHPCMS V9静态化HTML生成设置及URL规则优化
查看>>
数据分析处理库Pandas——概述
查看>>
博客园代码黑色高亮背景设置
查看>>
ignorable tips
查看>>
Eclipse 在ubuntu桌面显示快捷启动以及解决Eclipse 在ubuntu中点击菜单栏不起作用的原因....
查看>>
Python学习 Day18 Python 3层架构
查看>>
《暗时间》读书笔记(二)
查看>>
SQL如何将A,B,C替换为'A','B','C'
查看>>
2018-11-17站立会议内容
查看>>
jQuery中的height()、innerheight()、outerheight()的区别总结
查看>>
Garbage Disposal(模拟垃圾装垃圾口袋)
查看>>
多线程辅助类之CountDownLatch(三)
查看>>
typedef用法
查看>>