题目描述
题目描述
小婷有一个 行 列的仓库。仓库中每个位置的情况用一个字符表示:
#:有一个货箱;.:为空;X:有一块固定挡板。
仓库的传送装置要运行 轮,轮数从 开始计算:
- 第 轮,货箱尝试向右移动一格;
- 第 轮,货箱尝试向下移动一格。
每一轮开始时,先观察这一轮开始时的整个仓库。如果某个货箱要移动到的位置在仓库内,并且该位置此时为空,它就在这一轮移动一格;否则,它保持原位。所有货箱都根据这一轮开始时的状态同时决定是否移动,挡板始终不动。
本轮刚被其他货箱空出的位置,要到下一轮才能供货箱移入。 例如,一行中的 ##. 在一轮向右移动后会变成 #.#,而不是 .##。
每轮移动结束后,再以新的仓库状态开始下一轮。请输出 轮中货箱移动的总次数,以及最后仓库的状态。一个货箱每移动一格,就计为一次移动。
输入格式
从文件 move.in 中读取数据。
第一行包含三个整数 ,分别表示仓库的行数、列数和运行轮数。
接下来 行,每行包含一个长度为 的字符串,表示初始仓库的状态。各行从上到下给出,每行的字符从左到右给出。
输出格式
输出到文件 move.out 中。
第一行输出一个整数,表示所有轮中货箱移动的总次数。
接下来输出 行,每行输出一个长度为 的字符串,表示最后仓库的状态。
3 4 2
##..
.X#.
....
5
....
#X#.
...#
1 5 3
##.X.
2
.##X.
样例解释
样例 #1 中,第一轮向右移动,第一行右侧的货箱和第二行的货箱各移动一格,共移动 次。第一行左侧的货箱右边在这一轮开始时有另一个货箱,因此不能移动。第一轮结束后的仓库为:
#.#.
.X.#
....
第二轮向下移动,三个货箱的下方都为空,因此它们各移动一格,共移动 次。两轮一共移动 次。
样例 #2 中,第一轮后变为 #.#X.,有一个货箱移动。第二轮尝试向下移动,但仓库只有一行,没有货箱能够移动。第三轮后变为 .##X.,又有一个货箱移动,另一个货箱被挡板挡住。因此总共移动 次。
数据规模与约定
对于所有数据,保证:
- ;
- 每行字符串的长度均为 ,且只包含
#、.和X; - 初始仓库中可以没有货箱,也可以没有空位置或挡板。
本题采用子任务捆绑计分:只有通过一个子任务的全部测试点,才能获得该子任务的分数。
| 子任务编号 | 分值 | 额外约束 |
|---|---|---|
| 无特殊限制 |