这道题按照题目描述的三种指令来模拟即可。
Q–退出并打印当前棋盘,L–先明确当前是黑棋还是白旗的回合,然后搜索棋盘的每个位置看是否可以放,M–先检查当前回合是否有合法位置,如果没有切换双方回合然后放置,放置后修改棋盘和棋子数目。
注意输出格式,特别是’Black - xx White - yy’,是%2d格式。
代码如下:
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<vector>
#include<queue>
#include<set>
#include<map>
#include<cstring>
#include<string>
using namespace std;
char a[10][10];
bool turn; //0--white turn 1--black turn
typedef struct{
int x;
int y;
}Node;
vector<Node> list;
int bnum,wnum;//black piece num and white piece num
int dirx[] = { -1, 1, 0, 0, -1, -1, 1, 1 }, diry[] = {
0,0,-1,1,-1,1,-1,1};
bool inxy(int x, int y){
if (x<1 || x>8 || y<1 || y>8)
return false;