#CCSP2017A. 五子棋
五子棋
时间限制: 1.0 秒
空间限制: 128 MB
题目描述
五子棋是世界智力运动会竞技项目之一,是一种两人对弈的纯策略型棋类游戏。通常双方分别使用黑白两色的棋子,下在棋盘直线与横线的交叉点上,先形成五子连珠者获胜。
五子连珠是在横线,纵线,斜线,反斜线四个方向上形成五子及以上的连线,当出现多于五子的连珠时,也只记为一次五子连珠。
五子连珠总数等于棋局中的所有方向上的五子连珠连线的数量之和。
我们想知道,给定一个长宽皆为 的棋局,白棋落在哪些点可以增加白棋五子连珠总数?
对增加白棋五子连珠总数的举例说明(其中 * 点为未落子的点,w 点为已经落下白棋的点,b 为已经落下黑棋的点,A 点为我们本次选择的落点):
wwwwAbbbb
落白棋之前未形成五子连珠,落入白棋之后,五子连珠总数加一,满足要求。
wwwwwAbbbb
落白棋之前已经形成五子连珠,落白棋之后,五子连珠总数不变,不满足要求。
wwwwwAwwwww
落白棋之前五子连珠总数为二,落入白棋之后,两边连成一线,五子连珠总数减一,不满足要求。
*w***w*****
**w**w*****
***w*w*****
****ww*****
wwwwwAwwwww
落白棋之前五子连珠总数为二。落入白棋之后,两边连成一线,斜向和纵向形成新的五子连珠,总数为三。五子连珠总数加一, 这个点满足要求。 、
输入格式
从标准输入读入数据。
输入为第一行为一个数字 (),表示棋盘大小。
接下来的 行,每行为 个字符,可能有三种字符,* 表示无棋子,b 表示黑棋,w 表示白棋。
输入棋局中可能已经有五子连珠的情况,我们需要计算能增加白棋五子连珠总数的白棋落点。
输出格式
输出到标准输出。
输出为 行,包括 个满足要求的落点, 个点按照从左至右, 从上至下的顺序输出, 即先按行排序, 再按列排序输出。
每行为一个点坐标 ,分别表示列坐标, 行坐标, 以空格分隔,坐标序号从 开始,棋盘左上角为原点。
*a***
*****
*****
*****
***b*
该图中 点的坐标为 , 点的坐标为 。
8
****b*bb
*****b*b
bb*bbbw*
w*wbwwww
bwwbwwbw
ww**wbbw
*bww***w
***bwb*b
7 2
2 5
3 5
4 6
2 7
子任务
本题共 个测试点,每个测试点 分。
| 测试点编号 | 说明 |
|---|---|
| 没有满足要求的点 | |
| 只需要计算横纵方向,棋局中不存在旧的五子连珠 | |
| 需要计算所有方向,棋局中不存在旧的五子连珠 | |
| 盘面上存在旧的五子连珠 |