题意:就是走棋。棋盘中有S,M,A,M可以静止或者向四面八方走,但不可以与S相遇,S每一次往下走一步,直接暴力模拟即可。记得这里有两个剪枝,一个是走了超过8秒,还有一个是i<=t
int dx[]={0,0,0,1,1,1,-1,-1,-1},dy[]={-1,0,1,-1,0,1,-1,0,1};
const int LMT=8;
int tag;
char gra[LMT][LMT];
void dfs(int i,int j,int t)
{
if(tag||t>=LMT||i<=t)
{
tag=1;
return;
}
int ii,jj;
for(int x=0;x<9;x++)
{
ii=i+dx[x];jj=j+dy[x];
if(ii>=0&&ii<LMT&&jj>=0&&jj<LMT)
{
if(gra[ii-t][jj]!='S'&&(ii<=t||gra[ii-1-t][jj]!='S'))
dfs(ii,jj,t+1);
if(tag)return;
}
}
}
int main()
{
for(int i=0;i<LMT;i++)scanf("%s",gra[i]);
dfs(LMT-1,0,0);
if(tag)puts("WIN");
else puts("LOSE");
return 0;
}