刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

回形取数

提示信息:

回形取数是沿着一个数字矩阵的左上角向下开始移动取数当前方没有数字或者数字已经被取过就会左转继续移动取数当没有数可取时回形取数结束,如下图所示

回形取数结束后会产生一条线路图,也就是数字线路。

上路为:1,5,9,13,14,15,16,12,8,4,3,2,6,10,11,7

题目描述:

用户分行输入两个正整数(2<=正整数<=20),第一个数代表数字矩阵的行数,第二个数代表数字矩阵的列数,数字矩阵的数字为从1开始的正整数,根据回形取数规则将最终的数字线路输出(数字线路中的每个数字之间需要有一个英文逗号隔开)。

例如:

输入的是2和3数字矩阵为:

1 2 3

4 5 6

数字线路为:1,4,5,6,3,2

输入的是4和3数字矩阵为:

1 2 3

4 5 6

7 8 9

10 11 12

数字线路为:1,4,7,10,11,12,9,6,3,2,5,8

注:数字矩阵不需要输入此处只为展示

输入描述

第一行输入一个正整数作为行数

第二行输入一个正整数作为列数

编出描述

根据回形取数规则将数字线路输出(数字线路中的每数字之间需要有一个英文逗号隔开)


样例输入

3
2

样例输出

1,3,5,6,4,2

使用微信搜索喵呜刷题,轻松应对考试!

答案:

首先,输入两个正整数作为行数n和列数m,然后根据回形取数规则进行取数,并输出数字线路。

解析:

【喵呜刷题小喵解析】:
对于本题,用户输入两个正整数n和m,分别代表数字矩阵的行数和列数。数字矩阵的数字为从1开始的正整数。根据回形取数规则,从左上角开始,向下取数,当前方没有数字或者数字已经被取过,就左转继续移动取数,直到没有数可取时结束。

根据回形取数规则,我们可以模拟这个过程,生成数字线路。具体来说,我们可以按照以下步骤实现:

1. 创建一个n*m的二维数组,将数字从1开始填充到数组中。
2. 初始化四个方向向量,分别代表上、下、左、右四个方向。
3. 初始化当前位置为(0,0),也就是矩阵的左上角。
4. 初始化一个空列表,用于存储数字线路。
5. 进入循环,直到当前位置超出矩阵范围或者当前位置已经被取过:
* 将当前位置的数字添加到数字线路列表中。
* 如果当前位置是矩阵的最后一行且当前位置右边还有数字,或者当前位置不是矩阵的最后一行且当前位置右边没有数字但是下方还有数字,则将方向向量转向右。
* 如果当前位置是矩阵的最后一列且当前位置上方还有数字,或者当前位置不是矩阵的最后一列且当前位置上方没有数字但是左侧还有数字,则将方向向量转向上。
* 如果当前位置不是矩阵的最后一行且当前位置下方还有数字,则将方向向量转向下。
* 如果当前位置不是矩阵的第一列且当前位置左侧还有数字,则将方向向量转向左。
* 根据当前的方向向量,更新当前位置。
6. 将数字线路列表中的数字用英文逗号隔开,输出即可。

以上就是本题的解析和答案。
创作类型:
原创

本文链接:回形取数 提示信息: 回形取数是沿着一个数字矩阵的左上角向下开始移动取数当前方没有数字或者数字已经被

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share