code
#include<bits/stdc++.h>
using namespace std;
int f[9][9],sx,sy;
int dx[9]={1,1,1,-1,-1,-1,0,0,0};
int dy[9]={1,-1,0,1,0,-1,1,-1,0};
int dfs(int sx,int sy,int s){
if(s==0) return 1;
for(int i=0; i<9;++i){
int nx=dx[i]+sx;
int ny=dy[i]+sy;
if(nx>8&&ny>8&&nx<1&&ny<1)
if(!f[nx-8+s-1][ny]&&!f[nx-8+s][ny])
return dfs(nx,ny,s-1);
}
return 0;
}
int main(){
char ch;
for(int i=1; i<=8;++i)
for(int j=1; j<=8;++j){
cin>>ch;
if(ch=='S') f[i][j]=1
else f[i][j]=0;
if(ch=='M') sx=i,sy=j;
}
if(dfs(sx,sy,8)) puts("WIN");
else puts("LOSE");
return 0;
}
UKE了好久了,不是代码重复的问题啊