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