Bomb Game

来源:互联网 发布:孙玉伯 知乎 编辑:程序博客网 时间:2024/06/06 00:40



SG函数,第一个二维平面算SG函数的题:

   对于在边界上的点之后向一边扩展,而对于中间的无边界的点就会向两边扩张,即

SG[a][j]^SG[i][b]  ;



#include<cstdio>#include<cstring>using namespace std;const int maxn =52;int hash[10010];int map[maxn][maxn];int Get_SG(int a,int b){    memset(hash,0,sizeof hash);    for(int i=0;i<a;i++)        for(int j=0;j<b;j++)    {        hash[map[a][j]^map[i][b]]=1;    }    for(int i=0;;i++)        if(!hash[i]) return i;}int main(){    int n,m,ans;    char ch[100][100];    for(int i=0;i<maxn;i++)    {        map[i][0]=i;        map[0][i]=i;    }    for(int i=1;i<maxn;i++)        for(int j=1;j<maxn;j++)    {        map[i][j]=Get_SG(i,j);    }    while(~scanf("%d%d",&n,&m)&&(n+m))    {       for(int i=0;i<n;i++)  scanf("%s",ch[i]);       ans=0;        for(int i=0;i<n;i++)            for(int j=0;j<m;j++)            {                if(ch[i][j]=='#')  ans^=map[i][j];            }        if(ans)            printf("John\n");        else            printf("Jack\n");    }    return 0;}

原创粉丝点击