Game of Hyper Knights
LightOJ - 1315
六个方向搜索
不能打表,打表很麻烦,记录不了旧状态
#include <bits/stdc++.h>#define int long longusing namespace std;const int maxn = 1010;int n, k, a[maxn];int dire[6][2] = {{-1,-2},{1,-2},{-2,-1},{-2,1},{-1,-3},{-3,-1}};int sg[maxn][maxn];int fsg(int x,int y){if(sg[x][y] != -1)return sg[x][y];sg[x][y]=0;int mex[8];memset(mex,0,sizeof(mex));for(int i=0; i<6; i++){if(x+dire[i][0]>=0 && y+dire[i][1]>=0)mex[fsg(x+dire[i][0],y+dire[i][1])]=1;}int cnt=0;while(mex[cnt])cnt++;sg[x][y] = cnt;return sg[x][y];}signed main(){memset(sg,-1,sizeof(sg));int t;cin>>t;int cas=1;while(t--){int n;cin>>n;int ans=0;for(int i=0; i<n; i++){int x,y;cin>>x>>y;ans ^= fsg(x,y);}printf("Case %lld: ",cas++);if(ans)puts("Alice");elseputs("Bob");}return 0;}
如果觉得《Game of Hyper Knights LightOJ - 1315》对你有帮助,请点赞、收藏,并留下你的观点哦!