poj2311

来源:互联网 发布:犀牛mac破解版安装教程 编辑:程序博客网 时间:2024/06/05 17:06

由2*3  3*2   2*2三个必输状态来进行递推,其实sg值的递推函数真的惊人的相似,而且博弈万物皆可回归到sg,对比HDU1536 HDU1848,这些都是有个递推sg的过程,仔细看看会发现把思路转回sg值,递推真的惊人相似


#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<string>#include<vector>#include<queue>#include<cmath>#include<memory.h>using namespace std;int sg[202][202];int dfs(int w,int h){if(sg[w][h]>=0)return sg[w][h];bool flag[202]={0};for(int i=2;i<=w/2;i++){flag[dfs(i,h)^dfs(w-i,h)]=1;}for(int i=2;i<=h/2;i++){flag[dfs(w,i)^dfs(w,h-i)]=1;}for(int i=0;;i++)if(flag[i]==0)return sg[w][h]=i;}int main(){int w,h;memset(sg,-1,sizeof(sg));while(cin>>w>>h){if(dfs(w,h))puts("WIN");elseputs("LOSE");}}