poj 2311 Cutting Game 博弈论

思路:求SG函数!!

代码如下:

 #include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
using namespace std;
int sg[][];
int getsg(int m,int n)
{
if(sg[m][n]!=-) return sg[m][n];
bool vis[];
memset(vis,,sizeof(vis));
for(int i=;i<=m/;i++) vis[getsg(i,n)^getsg(m-i,n)]=;
for(int i=;i<=n/;i++) vis[getsg(m,i)^getsg(m,n-i)]=;
int i=;
while(vis[i]) i++;
return sg[m][n]=i;
}
int main()
{
memset(sg,-,sizeof(sg));
int m,n;
while(cin>>m>>n) puts(getsg(m,n)?"WIN":"LOSE");
return ;
}
上一篇:Shell案例11——20


下一篇:head标签详细讲解