顺时针打印矩阵

顺时针打印矩阵

给定一个矩阵,要求顺时针打印出来

方法是一圈一圈的打印。如图所示

avator

然后代码就好写了,就一圈一圈地打出来就可以了。

import numpy as np
import sys

def printMatrix(matrix):
    m,n = matrix.shape
    start = 0
    while 2*start <= 2*min(m,n)-1:    # 这个条件是由上图右下角的两个条件综合得到的.
        printMatrixCircle(matrix, m, n, start)
        start += 1
    return

def printMatrixCircle(matrix, m, n, start):
    endX = n-1-start
    endY = m-1-start

    # 从左到右打印一行
    for i in range(start, endX+1):
        print(matrix[start][i])

    # 从上到下打印一列
    if start < endY:
        for i in range(start+1, endY+1):
            print(matrix[i][endX])

    # 从右到左打印一行
    if start<endX and start<endY:
        for i in range(endX-1, start-1, -1):
            print(matrix[endY][i])

    # 从下到上到印一列
    if start<endX and start<endY-1:
        for i in range(endY-1, start, -1):
            print(matrix[i][start])

def main():
    m = int(sys.argv[1])
    n = int(sys.argv[2])
    matrix = np.random.uniform(size=m*n).reshape(m,n)
    print(matrix)
    print matrix.shape
    printMatrix(matrix)

if __name__ == '__main__':
    main()
~                               

打赏,谢谢~~

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,多谢支持~

打开微信扫一扫,即可进行扫码打赏哦