POJ 3537:Crosses and Crosses(Multi-Nim)
2017-03-27 21:12
351 查看
【题目链接】 http://poj.org/problem?id=3537
【题目大意】
在一个1*n的方格纸上下棋,谁先连三子谁就赢了,问必胜的是谁。
【题解】
我们发现对于一个n规模的游戏。在i位置下棋就能将游戏拆分为i-3和n-i-2两个游戏
对于可拆分的游戏,其sg函数为拆分后游戏sg值的异或和,因此我们用记忆化搜索来记录sg值。
【代码】
【题目大意】
在一个1*n的方格纸上下棋,谁先连三子谁就赢了,问必胜的是谁。
【题解】
我们发现对于一个n规模的游戏。在i位置下棋就能将游戏拆分为i-3和n-i-2两个游戏
对于可拆分的游戏,其sg函数为拆分后游戏sg值的异或和,因此我们用记忆化搜索来记录sg值。
【代码】
#include <cstdio> #include <cstring> using namespace std; int n,sg[2010]; int SG(int n){ if(n<0)return 0; if(sg >=0)return sg ; bool tmp[2010]={0}; for(int i=1;i<=n;i++){ int t=SG(i-3)^SG(n-i-2); tmp[t]=1; }for(int i=0;;i++){ if(!tmp[i])return sg =i; } } int main(){ memset(sg,-1,sizeof(sg)); while(~scanf("%d",&n)){ if(SG(n))puts("1"); else puts("2"); }return 0; }
相关文章推荐
- POJ 3537 Crosses and Crosses [Multi-SG]
- poj 3537 Crosses and Crosses (Multi-SG游戏)
- 博弈之 Nim 游戏&poj 3537 Crosses and Crosses
- poj 3537 Crosses and Crosses(NIM变形)@
- [Multi-SG] POJ 3537 Crosses and Crosses & BZOJ 2940 [Poi2000]条纹
- POJ 3537 Crosses and Crosses 已翻译
- POJ-3537-Crosses and Crosses
- POJ 3537 Crosses and Crosses
- POJ 3537 Crosses and Crosses(SG/还未想完全通的一道SG)
- poj 3537 Crosses and Crosses (SG)
- POJ 3537 Crosses and Crosses
- POJ-3537 Crosses and Crosses (博弈, SG函数)
- POJ 3537 Crosses and Crosses
- POJ 3537 Crosses and Crosses
- poj 3537 Crosses and Crosses 博弈论之grundy值
- POJ 3537 Crosses and Crosses(博弈)
- [poj 3537]Crosses and Crosses(博弈论)
- 【POJ】【3537】Crosses and Crosses
- POJ 3537 Crosses and Crosses
- POJ 3537 Crosses and Crosses