这个问题的核心是模拟整个游戏过程,直到达到稳定状态。我们可以使用一个主循环来不断处理每一轮的消除和下落,直到某一轮没有任何消除发生时,模拟结束。
每一轮模拟包含以下三个关键步骤:
标记阶段
to_eliminate[H][5]
),并将其所有值初始化为 false
。图图在玩一个消消乐的游戏,在这个游戏中使用了一个 H 行 ×5 列单元格的网格,如下图所示。一块刻有数字 (1 ~ 9) 的石头被放置在每个单元格中。当水平相邻的格子中的三个或更多石头上刻有相同的数字时,这些石头就会消失。如果格子里有石头,石头消失了,上面格子里的石头就会掉下来,填补空缺。
游戏采取以下步骤。
1.当水平相邻的格子中的三个及以上的石头上刻有相同的数字时,这些石头就会消失。
2.当石头位于空单元上方的单元中时,这些石头会下降,以便填充空单元。
3.如果在当前状态下,有一组或多组石头满足消失条件,则会同时消失,(即消失是同步的)。
4.重复上述步骤,直到网格中的石头无法再通过上述步骤消失,
现在请你编写一个程序,求出消失的石头上数字的总和。
第一行给出测试用例的数量 T ,
对于每一组用例第一行给出 H ,表示网格的行。
接下来 H 行 5 列,给出网格的信息,第 i 行 j 列的数字为 xi,j ,用空格分隔。
1≤T≤1100
1≤H≤10
1≤xi,j<9
对于每一组测试用例,输出消失的石头上数字的总和。
输入
1
1
6 9 9 9 9
输出
36
说明
4 个连续的 9 消失
输入
1
5
5 9 5 5 9
5 5 6 9 9
4 6 3 6 9
3 3 2 9 9
2 2 1 1 1
输出
38
说明
见样图解释