如何编写程序按指定路径规则输出n×n矩阵的元素
实现思路
- 需求对应的输出顺序本质是顺时针螺旋遍历n×n矩阵,可以通过维护上下左右四个边界的方式实现,逻辑清晰不易出错:
- 先定义四个边界值:上边界
top=0,下边界bottom = n-1,左边界left=0,右边界right = n-1 - 按顺序遍历四条边,每遍历完一条边就收缩对应边界,直到上下/左右边界交叉就停止遍历:
- 第一步:从左到右遍历上边界所在的整行,遍历完成后上边界向下+1
- 第二步:从上到下遍历右边界所在的列(从更新后的上边界开始到下边界结束),遍历完成后右边界向左-1
- 第三步:先判断上下边界是否还有效,有效则从右到左遍历下边界所在的行,遍历完成后下边界向上-1
- 第四步:先判断左右边界是否还有效,有效则从下到上遍历左边界所在的列(从更新后的下边界开始到上边界结束),遍历完成后左边界向右+1
- 所有遍历到的元素按顺序拼接,就是要求的输出结果。
- 先定义四个边界值:上边界
Python 可运行代码
# 读取输入 n = int(input()) matrix = [] for _ in range(n): row = list(map(int, input().split())) matrix.append(row) result = [] top, bottom = 0, n - 1 left, right = 0, n - 1 while top <= bottom and left <= right: # 遍历上边界:左→右 for i in range(left, right + 1): result.append(str(matrix[top][i])) top += 1 # 遍历右边界:上→下 for i in range(top, bottom + 1): result.append(str(matrix[i][right])) right -= 1 # 遍历下边界:右→左,先判断边界有效性 if top <= bottom: for i in range(right, left - 1, -1): result.append(str(matrix[bottom][i])) bottom -= 1 # 遍历左边界:下→上,先判断边界有效性 if left <= right: for i in range(bottom, top - 1, -1): result.append(str(matrix[i][left])) left += 1 # 按要求格式输出 print(' '.join(result))
上述代码代入题目给出的输入示例,输出结果和示例完全一致。
内容的提问来源于stack exchange,提问作者dcapslolxd
相关产品推荐
相关产品推荐

