zoukankan      html  css  js  c++  java
  • python3 顺时针打印矩阵元素

    code

    '''
    输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,
    例如,如果输入如下矩阵:
    [[ 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.
    '''
    
    # -*- coding:utf-8 -*-
    class Solution:
        # matrix类型为二维列表,需要返回列表
        def printMatrix(self, matrix):
            if matrix == None:
                return
            rows = len(matrix)
            columns = len(matrix[0])
            start = 0
            while rows > start * 2 and columns > start * 2:
                self.PrintMatrixInCircle(matrix, columns, rows, start)
                start += 1
            print('')
    
        def PrintMatrixInCircle(self, matrix, columns, rows, start):
            endX = columns - 1 - start
            endY = rows - 1 - start
    
            # 从左到右打印一行
            for i in range(start, endX+1):
                number = matrix[start][i]
                print("right",number, ' ', end='')
    
            # 从上到下打印一行
            if start < endY:
                for i in range(start+1, endY+1):
                    number = matrix[i][endX]
                    print("down",number, ' ', end='')
    
            # 从右到左打印一行
            if start < endX and start < endY:
                for i in range(endX-1, start-1, -1):
                    number = matrix[endY][i]
                    print("left",number, ' ', end='')
    
            # 从下到上打印一行
            if start < endX and start < endY-1:
                for i in range(endY-1, start, -1):
                    number = matrix[i][start]
                    print("up",number, ' ', end='')
    
    
    matrix = [[1,  2,  3,  4],
              [5,  6,  7,  8],
              [9, 10, 11, 12],
              [13, 14, 15, 16]]
    
    matrix2 = [[1],[2],[3],[4],[5]]
    
    matrix3 = [[1,2],
                [3,4],
                [5,6],
                [7,8],
                [9,10]]
    
    S = Solution()
    S.printMatrix(matrix)
    S.printMatrix(matrix2)
    S.printMatrix(matrix3)

    outputs

    macname@MacdeMBP ~ % python3 test.py
    right 1  right 2  right 3  right 4  down 8  down 12  down 16  left 15  left 14  left 13  up 9  up 5  right 6  right 7  down 11  left 10  
    right 1  down 2  down 3  down 4  down 5  
    right 1  right 2  down 4  down 6  down 8  down 10  left 9  up 7  up 5  up 3  
    macname@MacdeMBP ~ % 

  • 相关阅读:
    KnockoutJS(2)-监控属性
    KnockoutJS(1)-数据模型
    Stimulsoft Reports报表工具
    Knockout.js 初探
    web网页的表单排版利器--960css
    用一个div模拟textarea的实现
    正则表达式笔记4-封装class
    正则表达式笔记3
    正则表达式笔记2
    正则表达式笔记1
  • 原文地址:https://www.cnblogs.com/sea-stream/p/13766938.html
Copyright © 2011-2022 走看看