A3030 | 棋子的气
来源官方 / 2024
时间限制2s
内存限制128MB
通过 / 提交0/0
题目描述
时间限制:2000ms
内存限制:128MB
给定一个 $N \times N$ 的棋盘,令 $(i, j)$ 表示棋盘上从上往下第 $i$ 行和从左往右第 $j$ 列中的交叉点(落子点)。
每个交叉点上是否有棋子,由 $N$ 个长度为 $N$ 的字符串 $S_1,\ S_2,\ \cdots,\ S_N$ 表示。
对于一个交叉点 $(i, j)$,若 $S_{i,j}$ 为
B 表示交叉点上有一个黑色棋子;为 W 表示有一个白色棋子;为 . 表示交叉点上没有棋子为空点。你需要求出棋盘上每个棋子的 $\bf{气}$。
单个棋子在棋盘上,与它 $\bf{直线紧邻}$ 的 $\bf{空点}$ 是这个棋子的 $\bf{“气”}$。
棋子 $\bf{直线紧邻}$ 的点上,如果有 $\bf{同色棋子}$ 存在,则它们便相互连接成一个不可分割的整体。它们的气也应 $\bf{一并计算}$。
棋子 $\bf{直线紧邻}$ 的点上,如果有 $\bf{异色棋子}$ 存在,这口气就不复存在。
如所有的气均为对方所占据,便呈无气状态。无气状态的棋子不能在棋盘上存在。
$\bf{题目保证棋盘上不存在气为\ 0\ 的棋子。}$
$\large{数据范围}$
- $2 \le N \le 1000$
- $S_{i,j}$ 只包含字符
B 表示黑色棋子,W 表示白色棋子, . 表示空点。输入格式
每个测试文件格式如下:
$\tt{S_1}$
$\tt{S_2}$
$\tt{\vdots}$
$\tt{S_N}$
$\tt{N}$
$\tt{S_1}$
$\tt{S_2}$
$\tt{\vdots}$
$\tt{S_N}$
输出格式
对于每个测试文件,输出每个棋子的气,空点输出 $0$。
同一行所有棋子的气在一行中输出,两两之间空格隔开。
同一行所有棋子的气在一行中输出,两两之间空格隔开。
输入输出样例
输入 #1
9 ....B.B.. ....BBB.W ..B....W. .....WW.. ......... ..B..WWB. .BB...BWW ....WW.W. .........
输出 #1
0 0 0 0 8 0 8 0 0 0 0 0 0 8 8 8 0 3 0 0 4 0 0 0 0 4 0 0 0 0 0 0 6 6 0 0 0 0 0 0 0 0 0 0 0 0 0 7 0 0 4 4 2 0 0 7 7 0 0 0 2 4 4 0 0 0 0 6 6 0 4 0 0 0 0 0 0 0 0 0 0
输入 #2
9 .W.WWWB.. WBBWBB.B. .WBWBBB.B .W.WWBBB. ..W.WWWWB ....WBBB. .WWWWB... W.WWB.B.. .WWBB....
输出 #2
0 2 0 9 9 9 2 0 0 2 2 2 9 3 3 0 4 0 0 4 2 9 3 3 3 0 3 0 4 0 9 9 3 3 3 0 0 0 4 0 9 9 9 9 2 0 0 0 0 9 4 4 4 0 0 9 9 9 9 4 0 0 0 3 0 9 9 2 0 4 0 0 0 9 9 2 2 0 0 0 0
样例 $1$:
棋盘如下图所示:

对于黑色棋子:
棋子 $\tt{A}$,它的上下左右一共有 $\tt{4}$ 口气;
棋子 $\tt{B,\ C,\ D}$ 共享 $\tt{7}$ 口气;
棋子 $\tt{E,\ F,\ G,\ H,\ I}$ 共享 $\tt{8}$ 口气;
棋子 $\tt{J}$ 和 $\tt{K}$ 并不是 $\bf{直线紧邻}$ 所以它们每个棋子 $\tt{2}$ 口气,不共享。

对于白色棋子:
棋子 $\tt{a}$ 有 $\tt{3}$ 口气, 棋子 $\tt{b}$ 有 $\tt{4}$ 口气,并不是 $\bf{直线紧邻}$ 不共享气;
棋子 $\tt{c,\ d}$ 共享 $\tt{6}$ 口气;
棋子 $\tt{j,\ k}$ 共享 $\tt{6}$ 口气;
棋子 $\tt{e,\ f}$ 共享 $\tt{4}$ 口气;
棋子 $\tt{g,\ h,\ i}$ 共享 $\tt{4}$ 口气;

样例 $2$:
棋盘及各个棋子的气如下图所示:

棋盘如下图所示:

对于黑色棋子:
棋子 $\tt{A}$,它的上下左右一共有 $\tt{4}$ 口气;
棋子 $\tt{B,\ C,\ D}$ 共享 $\tt{7}$ 口气;
棋子 $\tt{E,\ F,\ G,\ H,\ I}$ 共享 $\tt{8}$ 口气;
棋子 $\tt{J}$ 和 $\tt{K}$ 并不是 $\bf{直线紧邻}$ 所以它们每个棋子 $\tt{2}$ 口气,不共享。

对于白色棋子:
棋子 $\tt{a}$ 有 $\tt{3}$ 口气, 棋子 $\tt{b}$ 有 $\tt{4}$ 口气,并不是 $\bf{直线紧邻}$ 不共享气;
棋子 $\tt{c,\ d}$ 共享 $\tt{6}$ 口气;
棋子 $\tt{j,\ k}$ 共享 $\tt{6}$ 口气;
棋子 $\tt{e,\ f}$ 共享 $\tt{4}$ 口气;
棋子 $\tt{g,\ h,\ i}$ 共享 $\tt{4}$ 口气;

样例 $2$:
棋盘及各个棋子的气如下图所示:

C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?