#include #include #include #include using namespace std; #define non 0 #define black 1 #define white -1 int mp[10][10],tmp[10][10]; vector > cmd; bool flag=0; void print() { for(int i=1;i<=8;i++) { for(int j=1;j<=8;j++) switch(mp[i][j]) { case non: putchar('-'); break; case black: putchar('B'); break; case white: putchar('W'); break; } putchar('\n'); } } int dx[]={+0,+1,+1,+1,+0,-1,-1,-1}; int dy[]={-1,-1,+0,+1,+1,+1,+0,-1}; bool put(int x,int y,int id,int st) { int i,k,j; for(i=1;i<=8;i++) for(j=1;j<=8;j++) tmp[i][j]=mp[i][j]; if(tmp[y][x]) return 0; bool flag=0; for(i=0;i<8;i++) { for(k=1;x+dx[i]*k>=1&&x+dx[i]*k<=8&&y+dy[i]*k>=1&&y+dy[i]*k<=8&&tmp[y+dy[i]*k][x+dx[i]*k]==-id;k++); if(tmp[y+dy[i]*k][x+dx[i]*k]==id&&k>=2) { flag=1; for(j=1;j>t; switch(t) { case '-': mp[i][j]=0; break; case 'B': mp[i][j]=black; break; case 'W': mp[i][j]=white; break; } } int now; cin>>t; if(t=='W') now=white; else now=black; while(1) { cin>>t; if(t=='Q') { print(); return; } if(t=='L') { cmd.clear(); for(int i=1;i<=8;i++) for(int j=1;j<=8;j++) if(put(j,i,now,0)) cmd.push_back(make_pair(i,j)); if(cmd.empty()) printf("No legal move."); else for(int i=0;i>n; while(n-->0) { memset(mp,0,sizeof(mp)); solve(); } return 0; } /* Sample Input 2 -------- -------- -------- ---WB--- ---BW--- -------- -------- -------- W L M35 L Q WWWWB--- WWWB---- WWB----- WB------ -------- -------- -------- -------- B L M25 L Q Sample Output (3,5) (4,6) (5,3) (6,4) Black - 1 White - 4 (3,4) (3,6) (5,6) -------- -------- ----W--- ---WW--- ---BW--- -------- -------- -------- No legal move. Black - 3 White - 12 (3,5) WWWWB--- WWWWW--- WWB----- WB------ -------- -------- -------- -------- */