立希的扫雷构造
题号:NC312073
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld

题目描述

\hspace{15pt}你知道吗,鱿鱼不仅能做鱿鱼丝,还能做肥皂呢。
\hspace{15pt}扫雷是一款经典游戏,游戏中有一张网格图,每一个格子要么是“地雷”、要么是“空地”。定义一个“空地”的危险值为周围 8 个格子中“地雷”的个数;“地雷”格子的危险值为 0
\hspace{15pt}立希为了狩猎鱿鱼,现在她需要在一个大小为 n \times m 的网格图中布置 k 个地雷,使得所有格子的危险值之和最大。

输入描述:

\hspace{15pt}每个测试文件均包含多组测试数据。第一行输入一个整数 T\left(1\leq T\leq 10^4\right) 代表数据组数,每组测试数据描述如下:

\hspace{15pt}在一行上输入三个整数 n, m, k \left(1 \leq n, m \leq 9;\, 0 \leq k \leq n \times m\right),表示网格图的长宽、地雷数量。

输出描述:

\hspace{15pt}对于每一组测试数据,第一行输出一个整数,表示所有网格的危险值之和;此后 n 行,每行输出一个长度为 m,仅由字符 \texttt{.}\texttt{*} 组成的字符串 s_{i,1}s_{i,2}\cdots s_{i,m},表示你所构造的网格图。其中,第 j 个字符 s_{i,j} = \texttt{*} 表示第 i 行第 j 列的格子为“地雷”;否则表示为“空地”。

\hspace{15pt}如果存在多个解决方案,您可以输出任意一个,系统会自动判定是否正确。注意,自测运行功能可能因此返回错误结果,请自行检查答案正确性。
示例1

输入

复制
2
3 3 1
3 3 3

输出

复制
8
...
.*.
...
14
...
***
...

说明

\hspace{15pt}对于第一组测试数据,每一个网格的危险值为:\begin{bmatrix}1 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 1\end{bmatrix},总危险值为 8

\hspace{15pt}对于第二组测试数据,每一个网格的危险值为:\begin{bmatrix}2 & 3 & 2 \\ 0 & 0 & 0 \\ 2 & 3 & 2\end{bmatrix},总危险值为 14