/ Vijos / 题库 /

消消乐(2)

消消乐(2)

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


【问题描述】

  码农小H手上所有开发项目终于结束了,由于项目非常成功,上司给让半年长假,在这漫长的假期中,实在无聊至极,于是以玩自己曾经开发的游戏来消磨时光。他最爱的游戏之一是“消消乐”。
  消消乐是在一块又高又窄的棋盘上进行的游戏,高 \(N\) 格,宽 10 格。 这是一个 \(N=6\) 的棋盘的例子:

        0000000000
        0000000300
        0054000300
        1054502230
        2211122220
        1111111223

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

【输入格式】

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

【输出格式】

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

【输入输出样例】

 Input

6 3
0000000000
0000000300
0054000300
1054502230
2211122220
1111111223

 Output

0000000000
0000000000
0000000000
0000000000
1054000000
2254500000

【输入输出样例解释】

  在上面的例子中,如果 \(K=3\),那么存在一个大小至少为 \(K\) 的颜色1的连通区域,同样有一个颜色2的连通区域。当它们同时被移除之后,棋盘暂时成为了这样:

      0000000000
      0000000300
      0054000300
      1054500030
      2200000000
      0000000003

  然后,由于重力效果,棋子下落形成这样的布局:

      0000000000
      0000000000
      0000000000
      0000000000
      1054000300
      2254500333

  再一次地,出现了一个大小至少为 \(K\) 的连通区域(颜色3)。移除这个区域就得到了最终的棋盘布局:

      0000000000
      0000000000
      0000000000
      0000000000
      1054000000
      2254500000

【数据限制】

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

【来源】

  Mr.he

信息

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