📜  从最后一列以Z字形打印矩阵(1)

📅  最后修改于: 2023-12-03 15:22:00.164000             🧑  作者: Mango

从最后一列以Z字形打印矩阵

在编程中,我们有时需要以不同的方式来遍历矩阵。这里我们将探讨如何从最后一列以Z字形打印矩阵。

实现思路

我们可以使用两个变量 ij 分别表示当前所在行和列的下标。从最后一列开始向左移动,以及向下移动,直到我们遍历完整个矩阵。

针对 i 的处理有一个规律:每当我们走完一条对角线后,i+j 的值会加 1。因此,我们可以通过这个值的奇偶性来判断我们当前要向上移动还是向下移动。

代码实现

下面是以 Python 为例的实现代码片段:

def print_zigzag(matrix):
    rows = len(matrix)
    cols = len(matrix[0])
    i = 0
    j = cols - 1

    # 当 i 能够到达最后一行时停止,表示我们已经遍历完整个矩阵了
    while i < rows:
        if (i+j) % 2 == 0:
            # i+j 为偶数,说明我们要向上走,每次 i 的值减一
            while i >= 0 and j < cols:
                print(matrix[i][j], end=' ')
                i -= 1
                j += 1
        else:
            # i+j 为奇数,说明我们要向下走,每次 i 的值加一
            while i < rows and j >= 0:
                print(matrix[i][j], end=' ')
                i += 1
                j -= 1

    #注意在 Python 中 print 语句默认会自动换行,因此这里使用 end=' ' 来消除换行

我们可以将以下矩阵作为输入,调用上面的函数进行测试:

matrix = [[1, 2, 3, 4], 
          [5, 6, 7, 8], 
          [9, 10, 11, 12], 
          [13, 14, 15, 16]]
print_zigzag(matrix)
结果输出

我们期望的结果应该是:

4 7 10 13 14 11 8 5 2 1 3 6 9 12 15 16

经过测试,我们得到了正确的输出,实现了从最后一列以 Z 字形打印矩阵的目标。