顺时针打印矩阵(经典算法)

 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.

#该函数像魔方一样翻转矩阵,每次都把要打印的一列翻转到第一行
def
turnMatrix(matrix): r = len(matrix) c = len(matrix[0]) B = [] for i in range(c-1,-1,-1): A = [] for j in range(r): A.append(matrix[j][i]) B.append(A) return B def printMatrix(matrix): res=[] while matrix: res+=matrix.pop(0) if not matrix: break matrix=turnMatrix(matrix) return res matrix=[[1,2,3],[5,6,7,],[9,10,11]] print(printMatrix(matrix))

 解析:算法经典就经典到利用玩魔方的方式,首先取走矩阵的第一行,然后逆时针翻转矩阵,把最后一列翻转到第一行。接着继续取走第一行,然后再继续翻转矩阵,一直到取走所有元素,就是按顺时针打印出来的。

转载于:https://www.cnblogs.com/gczr/p/8387623.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值