CF1669G Fall Down

题目描述

有一个 $n$ 行 $m$ 列的网格,其中有三种类型的格子: - 空格子,用 `.` 表示。 - 石头,用 `*` 表示。 - 障碍物,用小写拉丁字母 `o` 表示。 所有的石头会一直下落,直到遇到地面(即最底下一行)、障碍物,或者已经无法再移动的其他石头为止。(换句话说,所有石头只要还能下落就会继续下落。) 请模拟这个过程。最终网格会是什么样子?

输入格式

输入包含多组测试用例。第一行为一个整数 $t$($1 \leq t \leq 100$),表示测试用例的数量。接下来是每个测试用例的描述。 每个测试用例的第一行为两个整数 $n$ 和 $m$($1 \leq n, m \leq 50$),分别表示网格的行数和列数。 接下来有 $n$ 行,每行包含 $m$ 个字符。每个字符为 `.`、`*` 或 `o`,分别表示空格子、石头和障碍物。

输出格式

对于每个测试用例,输出一个 $n$ 行 $m$ 列的网格,表示模拟下落过程后的结果。 每个测试用例之间不需要输出空行,样例中的空行仅用于展示清晰。

说明/提示

由 ChatGPT 4.1 翻译