蛇形打印矩阵

28 Aug 2024 | 5 分钟阅读

矩阵遍历可能比我们想象的要棘手,因此它成为面试官喜欢提出的问题。我们经常会遇到与二维矩阵相关的问题,并以特定模式打印矩阵的元素。其中一种模式是“蛇形模式”。

在本文中,我们将学习如何编写 Python、C、C++ 和 Java 程序以蛇形模式打印矩阵。

什么是蛇形模式?

矩阵的蛇形模式遍历涉及交替地逐行移动。

任务

给定一个 N * M 大小的矩阵,任务是以蛇形模式打印矩阵的元素。

涉及的步骤

  • 我们从左上角 (0,0) 开始,向右移动到行的末尾。
  • 然后,我们移动到下一行,并从右到左遍历。

这个过程重复进行,直到覆盖整个矩阵。

考虑以下示例矩阵(3 x 3)

此矩阵的蛇形模式遍历将产生以下输出

以下是蛇形模式的Python 实现

输出

Matrix in a Snake Pattern:
1 2 3 
6 5 4 
7 8 9

说明

在上面的程序中,我们遍历矩阵的每一行。

  • 对于偶数索引行(0 基索引),我们从左到右遍历,
  • 对于奇数索引行,我们从右到左遍历。
  • print() 函数用于在打印完每一行后换行。

时间复杂度 = O(N*M):其中 N*M 是矩阵中的总元素数量。上面的程序访问每个元素一次。

空间复杂度 = O(1):未使用额外空间。

以下是蛇形模式的C 实现

输出

Matrix in Snake Pattern:
1 2 3 
6 5 4 
7 8 9
12 11 10

说明

在上面的程序中,我们将 printMatrixInSnakePattern() 函数与矩阵(4x3)、行数=4 和列数=3 作为参数一起调用,以蛇形模式打印矩阵。

在函数内部,我们使用嵌套循环以与 Python 代码相同的方式遍历矩阵。我们使用 'printf' 打印元素,使用 '\n' 在每行后换行。

以下是蛇形模式的C++ 实现

输出

Matrix in the Snake Pattern:
1 2 3 4
8 7 6 5
9 10 11 12

说明

在上面的程序中,我们将 printMatrixInSnakePattern() 函数与矩阵(3x4)、行数=3 和列数=4 作为参数一起调用,以蛇形模式打印矩阵。

在函数内部,我们使用嵌套循环以与 Python 和 C 代码相同的方式遍历矩阵。我们使用 'cout' 打印元素,使用 'endl' 在每行后换行。

以下是蛇形模式的 Java 实现

输出

Matrix in Snake Pattern:
1 2 3 4 
8 7 6 5 
9 10 11 12 
16 15 14 13

说明

在上面的程序中,我们创建了一个名为 SnakePatternMatrix 的类。在该类中,我们定义了一个 printMatrixInSnakePattern 方法,该方法以蛇形模式打印给定矩阵的元素。

在方法内部,我们使用了嵌套循环,以与 Python、C 或 C++ 代码相同的方式遍历矩阵。我们使用 System.out.print 打印元素,并使用 System.out.println 在每行后换行。

结论

在本文中,我们提供了简单的 Python、C、C++ 和 Java 代码来以蛇形模式打印矩阵。您可以使用您熟悉的任何代码,并尝试传递不同维度的矩阵。但请确保在使用 C 或 C++ 代码时,在定义函数参数时需要指定列数。