首先,我们定义了两个列表 dx
和 dy
,它们分别表示在二维平面上向右、下、左、上移动时,x 和 y 坐标的变化量。
然后,我们定义了一个变量 d
来表示当前的移动方向,初始值为0,表示向右。
在一个循环中,我们不断地将数字填入矩阵,并将数字加一。然后,我们检查下一步的位置是否越界或者已经被填充过。如果是,我们就改变移动方向(通过将 d
加一并对4取余实现)。然后,我们根据新的方向更新 x 和 y 的值。仔细思考,这样可以完成顺时针的填充。
最后,我们打印出填充好的矩阵。每一行的数字之间用空格分隔,然后将数字转换为字符串,按行输出。
疫情期间,小红隔离在家,百无聊赖,在纸上写数字玩。他发明了一种写法:
给出数字个数n和行数m (1≤n,m≤999),从左上角的1开始,按照顺时针螺旋向内写方式,依次写出1,2,3..n,最终形成个一m行矩阵。 小红对这个矩阵有些要求
1.每行数字的个数一样多
2.列的数量尽可能少
3.填充数字时优先填充外部
4.数字不够时,使用单个*号占位
输入一行,两个整数,空格隔开,依次表示n、m
符合要求的唯一矩阵
输入
9 4
输出
1 2 3
* * 4
9 * 5
8 7 6
说明
9个数字写成4行,最少需要3列
输入
3 5
输出
1
2
3
*
*