注册网站后怎么建设,深圳建设合同备案 网站,织梦pt官网,河北建设工程有限公司描述
在程序设计实践课上#xff0c;老师给大家布置下了这样的实验任务#xff1a;编写一个五子棋应用程序
胜负判定是五子棋程序最核心的部分。给出当前棋盘的状态#xff0c;请你完成对五子棋胜负的判定#xff08;仅考虑当前状态#xff0c;不考虑后续落子#xff0…描述
在程序设计实践课上老师给大家布置下了这样的实验任务编写一个五子棋应用程序
胜负判定是五子棋程序最核心的部分。给出当前棋盘的状态请你完成对五子棋胜负的判定仅考虑当前状态不考虑后续落子
规则在水平、垂直或对角线方向形成5个以上棋子连续的一方获胜
输入
输入第一行为一个整数 t (1≤t≤100)代表一共有 t 组输入
对于每组输入
第一行一个整数 n (1≤n≤20)代表棋盘的大小为 n× n
之后的 n 行每行包含一个长度为 n 的字符串代表当前棋盘的状态其中空位用字符.表示黑棋、白棋分别用字符BW表示
输入保证只会出现胜负未定、黑棋胜利、白棋胜利三种情况即最多只会有一方有5连子
输出
输出 t 行 分别为每组输入的胜负结果
若黑棋胜利输出Black 若白棋胜利输出White若胜负未定则输出Not so fast
输入样例
3
5
WWWWW
BBBB.
.....
.....
.....
5
B...W
.B.W.
..B..
.W.B.
W...B
5
.....
.....
.....
.....
.....
输出样例
White
Black
Not so fast
代码实现
#includestdio.h
#includestring.h
char s[21][21];
int extend(int n,int i,int j)
{if(s[i][j].)return 0;int sum0;int xi;while(xns[x][j]s[i][j]){x,sum;}if(sum5){if(s[i][j]W)return 1;else return -1;}int yj;sum0;while(yns[i][y]s[i][j]){y,sum;}if(sum5){if(s[i][j]W)return 1;else return -1;}xi,yj,sum0;while(xnyns[x][y]s[i][j]){x,y,sum;}if(sum5){if(s[i][j]W)return 1;else return -1;}xi,yj,sum0;while(xny0s[x][y]s[i][j]){x,y--,sum;}if(sum5){if(s[i][j]W)return 1;else return -1;}return 0;
}
int judge(int n)
{for(int i0;in;i){getchar();for(int j0;jn;j){scanf(%c,s[i][j]);}}for(int i0;in;i){for(int j0;jn;j){int resextend(n,i,j);if(res0)return 1;else if(res0)return -1;}}return 0;
}
int main()
{int t;scanf(%d,t);while(t--){int n;scanf(%d,n);int resjudge(n);if(res0){printf(White\n);}else if(res0){printf(Black\n);}else printf(Not so fast\n);}return 0;
}