#1405. 黑白棋子
黑白棋子
黑白棋子
题目描述
有一个行列的棋盘。棋盘的每个格子上要么是空,要么是一个黑色或白色的棋子。
我们现在将这个棋盘竖立起来,在游戏的任意时刻,这个棋盘都受到重力,满足不在最后一行的棋子下方都有棋子。
开始,棋盘上有一些棋子(但不一定是满的)。每一轮,玩家可以选择一个棋子,然后将所有和棋子在同一列的同一颜色连续段的棋子全部消除(不包括本身)。所有和在同一颜色连续段即和颜色相同,且该列在和之间棋子均与同色。
若消除了至少一个棋子,那么消除成功,之后棋子本身将反色(黑色变白色,白色变黑色),接着所有棋子向下掉落直到棋子落到最下方为止(棋子的相对顺序不变);反之,如果没有棋子被消除,那么消除失败,棋盘不会有任何变化。
当所有棋子无法被消除时,游戏结束。
给定初始棋盘,请计算最少需要进行几轮消除才能使游戏结束。
输入格式
第一行包含两个正整数,,中间由一个空格隔开,表示棋盘为行列。
接下来行,每行包含一个长度不超过的非空字符串,依次描述每一列从下到上的棋子,字符串只含字符和,若第个字符为,表示该列从下往上第个棋子为黑色,反之,若字符为,表示棋子为白色。
输出格式
输出仅一行,包含一个整数,表示使游戏结束的最少消除轮数。
数据范围与提示
| 数据范围 | 约束条件 |
|---|---|
| 对于的数据 | , |
| 对于的数据 | , |
| 对于的数据 | , |
| 对于的数据 | , |
样例
4 3
10
1110
0100
5
说明
至少需要轮消除,一种方案为依次选择:
- 第列从下往上第个棋子
- 第列从下往上第个棋子
- 第列从下往上第个棋子
- 第列从下往上第个棋子
- 第列从下往上第个棋子
注意最后两轮的消除是不一样的。
4 3
10
1110
0100
5
说明
初始时就无法消除任何棋子,故答案为。
见eliminate.in
见eliminate.ans