题目描述:塔子哥正在设计一个二维平面音游,其中有一个由 (H) 个水平方块和 (V) 个垂直方块组成的网格。每个方块的方块组是指与该方块相邻的所有方块及它自己,垂直方向的方块是首尾相连的。给定一个方块的 (ID),要求输出该方块组中的所有方块 (ID),并按照从上到下、逆时针排列的顺序,最后输出的方块 (ID) 放在组的末尾。
输入格式:第一行包含三个正整数 (H), (V), (M)。接下来的 (M) 行,每行输入一个方块的 (ID)。
输出格式:对于每个输入的方块 (ID),输出对应的方块组,方块 (ID) 以空格分隔。
在这个问题中,我们需要处理的是一个由 ( n ) 行和 ( m ) 列组成的网格,方块的 ID 从 0 到 ( n × m - 1 )。我们的任务是为每个给定的方块 ID 计算它的方块组,即它自己及其周围的方块 ID。
小明最近沉迷于设计一个二维平面音游。
在我们所给的例子里,假设有24个方块,分为水平8个和垂直3个(如下表格所示)。
当玩家点击一个亮起的方块时,它周围的所有方块都会高亮。为了实现这个互动功能,小明提出了一个方块组的概念:一个方块的方块组是指在上下左右方向上紧挨着的所有方块和它自己。而且垂直方向上的方块是首尾相连的,但水平方向上的方块是首尾不连的。
比如,在24个方块中,方块0的方块组是“16 8 1 0”,方块10的方块组是“2 9 18 11 10”,方块23的方块组是“15 22 7 23”。如下图所示,为了方便理解,我们把最后一行方块复制一份到第一行,表示上下相连:
16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
---|---|---|---|---|---|---|---|
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
小明想要当玩家点击某个方块时,这个方块的整个方块组都会亮起。为了实现这个互动功能,他想让你设计一个程序,它能实时得到某个方块的方块组。
第一行输入为3个正整数 H , V (1≤H,V≤256)和 M (1≤M<H×V), H ,V 为方块盘的水平个数和垂直个数;
接下来 M 行,每一行输入一个方块的 ID ,方格 ID 从0开始,不超过 H×V−1 如:
8 3 1
12
输出对应的方格组,方格组内 ID 以空格分隔,ID从上方起始,逆时针排列,输入的方格 ID 放最后,如上例子对应的输出结果为: “4 11 20 13 12”
样例输入
12 4 1
21
输出
9 20 33 22 21
样例输入
16 4 2
0
21
样例输出
48 16 1 0
5 20 37 22 21