#B4059. [语言月赛 202411] Enemy
[语言月赛 202411] Enemy
题目描述
城和 城在城市中激战,战场可以被视为一个 行 列的方阵。方阵中的每个方格中的信息为如下可能中的一个:
#
,代表空地。A
,表示一位 城的士兵。B
,表示一位 城的士兵。H
,表示城墙。
方阵中行从上到下依次编号为 ,列从左到右依次编号为 。
城位于左侧, 城位于右侧。故对于每一行, 城的士兵全部位于 城士兵的左侧。
对于每一行,城墙只可能出现在 城士兵与 城士兵的中间,即城墙的左侧只可能有 城士兵,城墙的右侧只可能有 城士兵。且,同一行最多有 个方格是城墙。
激战开始,士兵们会根据地形指定战略。对于每一行:
- 如果该行有城墙,则士兵们会往自己城市方向后撤,在边界处整齐地排列。例如,若这一行初始时为
#A#AH#B#
,则后撤后这一行变为AA##H##B
。 - 否则,双方会进攻。对于人数较少的一方,士兵会全部倒下,从战场中消失。而另一方不会有士兵倒下,并且会冲至对方城市的方向,在边界处整齐地排列。例如,若这一行初始时为
#A##B#B#
,则进攻后这一行变为BB######
。特别地,如果这一行双方人数相等,则这一行所有士兵都会倒下。
随后激战结束。对于每个士兵会同时进行如下判断:
- 如果他的上方或下方有友方的士兵与他相邻,则他会从战场中消失,否则原地不动。
现在给你初始时的战场局面,请你输出最后战场的组成。
输入格式
第一行两个整数 ,表示方阵的行与列。
接下来 行,第 行一个长度为 的字符串 ,其中第 个字符 表示第 行第 列的情况。
输出格式
共 行,每行一个长度为 的字符串,表示战场最终的情况。其中第 行第 个字符表示第 行第 列的情况。
5 8
#A#AH#B#
#A##B#B#
##AA##BB
AAA###BB
AAA#ABBB
AA##H##B
BB######
########
########
####A###
3 2
#A
##
#A
#A
##
#A
3 3
AAB
A#B
ABB
#AA
###
BB#
提示
样例 #1 解释
激战结束后,战场的情况为
AA##H##B
BB######
########
#####AAA
####AAAA
右下角的 A
中,除了第 行第 列的 A
以外,下方或者上方都存在友方的士兵,故他们最终从战场中消失。最后战场如样例输出所示。
样例 #2 解释
注意只有在上方或下方有相邻的友方士兵时士兵才会从战场消失。
数据范围
对于所有数据,, 为 A
、B
、H
、#
中的一个,且每一行满足题目中的限制。具体测试点限制如下:
测试点编号 | 的范围 | 的范围 | 特殊性质 |
---|---|---|---|
无 | |||
不为 H |
|||
不为 B |
|||
无 | |||