2352. 回形取数
1000ms
256MB
简单
模拟法
题目描述
回形取数是沿着一个数字矩阵的左上角向下开始移动取数,当前方没有数字或者数字已经被取过就会“左转”继续移动(这里的左转是相对于移动方向的左侧),当没有数可取时回形取数结束。

现在给定一个 $N \times M$ 的矩阵,矩阵的数字从 1 开始按行优先顺序填充,即第 $i$ 行第 $j$ 列的数字为 $(i-1) \times M + j$。请输出最终的回形取数路线。

现在给定一个 $N \times M$ 的矩阵,矩阵的数字从 1 开始按行优先顺序填充,即第 $i$ 行第 $j$ 列的数字为 $(i-1) \times M + j$。请输出最终的回形取数路线。
输入格式
- 第一行包含一个正整数 $N$ ($2 \le N \le 20$),表示矩阵的行数。
- 第二行包含一个正整数 $M$ ($2 \le M \le 20$),表示矩阵的列数。
输出格式
- 输出一行,表示回形取数的数字线路,每个数字之间用一个英文逗号 `,` 隔开。
样例 1
输入 (Input)
3 2
输出 (Output)
1,3,5,6,4,2
- 对于所有数据:$2 \le N, M \le 20$。
- **矩阵生成提示**:数字矩阵不需要手动输入,程序中需要根据输入的 $N$ 和 $M$ 自动生成一个从 1 到 $N \times M$ 的顺序矩阵。
- **转向逻辑详解**:
初始方向为**向下**。
- 向下移动时,若遇到边界或已访问节点,左转变为**向右**;
- 向右移动时,左转变为**向上**;
- 向上移动时,左转变为**向左**;
- 向左移动时,左转变为**向下**。
方向循环顺序为:下 $\to$ 右 $\to$ 上 $\to$ 左 $\to$ 下。
› 输入 stdin
CtrlShiftEnter
‹ 输出 stdout
错误 stderr
操作成功