/ Vijos / 题库 /

消除游戏

消除游戏

时间限制:1秒  内存限制:256M


【问题描述】

  在暑假的CSP集训中,每天一场考试让小H倍感紧张而刺激,在些许的休息时间里,小H以玩自己曾经开发的游戏来打发时间,他最爱的游戏之一是“消除游戏”。
  消除游戏是在一张高N格,宽 \(10\) 格的棋盘上进行的游戏。下图是一个 \(N=6\) 的棋盘:
说明

  每个格子或者是空的(用0表示),或者是九种颜色之一的棋子(用数字1~9表示)。重力会使得棋子下落,所以没有那个棋子的下方会是空的。
  如果两个格子水平或垂直方向直接相邻,并都有同一种颜色的棋子,那么这两个格子就属于同一个连通区域。任意时刻出现至少K个有棋子的格子构成的连通区域,其中的棋子就会全部消失,格子变为空。如果同时出现多个这样的连通区域,它们同时消失。随后,重力可能会导致棋子向下落入某个变为空的格子。由此形成的新的布局中,又可能出现至少 \(K\) 个格子构成的连通区域。若如此,它们同样也会消失(如果又有多个这样的区域,则同时消失),然后重力又会使得剩下的方块下落,这一过程持续进行,直到不存在大小至少为 \(K\) 的连通区域为止。
  给定一个棋盘的初始状态,输出这些过程发生之后最终的棋盘的图案。

【输入格式】

  输入的第一行包含 \(N\) 和 \(K(1≤K≤10×N)\)。以下 \(N\) 行给出了棋盘的初始状态。

【输出格式】

  输出 \(N\) 行,描述最终的棋盘状态。

【输入输出样例1】

 Input

6 3
0000000000
0000000300
0054000300
1054502230
2211122220
1111111223

 Output

0000000000
0000000000
0000000000
0000000000
1054000000
2254500000

【样例1解释】

  在上面的例子中,$K=3,那么存在一个大小至少为 3 的橘色的连通区域,同样有一个紫色的连通区域。当它们同时被移除之后,棋盘暂时成为了这样:
说明
  然后,由于重力效果,棋子下落形成这样的布局:
说明
  再一次地,出现了一个大小至少为3的连通区域(绿色)。移除这个区域就得到了最终的棋盘布局:
说明

【输入输出样例2】

 Input

10 4
0000010005
0000060005
0102060005
0111066001
0142035503
1224435305
2223443666
1333344555
1133433566
1111111111

 Output

0000000000
0000000000
0000000000
0000000000
0000000005
0000000005
0000000005
0000000001
0002005003
1042415505

【数据限制】

  \(100\%\) 的数据满足,\(1 ≤ N ≤ 100\) 。

【来源】

  Mr.he

信息

ID
1301
难度
3
分类
搜索 | 队列 点击显示
标签
递交数
2
已通过
1
通过率
50%
被复制
2
上传者