本文主要是介绍[python]从蛇形打印矩阵说开去,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
手撕题常客,不是很难,但是思路比较多。
题目
给出一个 n × n n\times n n×n数组,按照回字形(“向右、向下、向左、向上”循环)打印,例如:
输入 n = 3 n=3 n=3,即数组:
[1, 2, 3]
[4, 5, 6]
[7, 8, 9]蛇形输出结果:
[1, 2, 3, 6, 9, 8, 7, 4, 5]
思路
1.方向、边界与修改
这是比较直接的思路,给定一个方向d
,分别指示下一步游标(i,j)
要移动的量,并给出一个边界,移动到触碰边界时修改方向和边界的值。
- 该方法较为常规,写得不规范的话容易数组越界。
详细代码略,只给出构建原 n × n n\times n n×n 矩阵的代码以供下一步使用。
# prepare-origin matrix-data
n = 4 # size of matirx, for example, which is `4x4`
a = [[(i+1)+j*n for i in range(n)] for j in range(n)]
for line in a:print(line)
2.寻找规律
- 向当前一个方向移动的最大步数记为
next_step
- 则
next_step
符合规律 n , n − 1 , n − 1 , n − 2 , n − 2...1 , 1 n,n-1,n-1,n-2,n-2...1,1 n,n−1,
这篇关于[python]从蛇形打印矩阵说开去的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!