📜  打印矩阵及其镜像的和(1)

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

打印矩阵及其镜像的和

本程序旨在打印一个给定矩阵及其在水平和垂直方向上的镜像的和。以下是你需要了解的细节。

输入格式

程序接受一个矩阵,矩阵每行的元素以空格分隔,每行之间以换行符分隔,以输入结束符(例如文件结尾)结束。

以下是一个用于输入矩阵的示例:

1 2 3
4 5 6
7 8 9
输出格式

程序以如下格式输出:

Original Matrix:
1 2 3
4 5 6
7 8 9

Mirrored Matrix:
3 2 1
6 5 4
9 8 7

Sum of Matrix and its Mirror:
4 4 4
10 10 10
16 16 16

输出分为三个部分:原矩阵、水平及垂直翻转后的矩阵以及它们的和。

实现方法

我们将输入矩阵保存在一个二维数组中。接下来,我们可以利用两个 for 循环来打印原始矩阵,然后再对整个数组进行赋值,水平和垂直镜像操作相当于数组元素的位置调换,最终再利用 for 循环打印修改后的数组,再相加得到最后矩阵。

你可以参考下面的示例代码实现这个算法:

# Read matrix from input
matrix = []
while True:
    try:
        row = list(map(int, input().strip().split()))
        matrix.append(row)
    except:
        break

# Print original matrix
print("Original Matrix:")
for i in range(len(matrix)):
    for j in range(len(matrix[i])):
        print(matrix[i][j], end=" ")
    print()

# Mirror matrix horizontally and vertically
mirrored_matrix = []
for i in range(len(matrix)):
    mirrored_row = []
    for j in range(len(matrix[i])):
        mirrored_row.append(matrix[i][len(matrix[i]) - j - 1])
    mirrored_matrix.append(mirrored_row)

final_matrix = []
for i in range(len(matrix)):
    final_row = []
    for j in range(len(matrix[i])):
        final_row.append(matrix[i][j] + mirrored_matrix[i][j])
    final_matrix.append(final_row)

# Print mirrored matrix and sum
print("\nMirrored Matrix:")
for i in range(len(mirrored_matrix)):
    for j in range(len(mirrored_matrix[i])):
        print(mirrored_matrix[i][j], end=" ")
    print()

print("\nSum of Matrix and its Mirror:")
for i in range(len(final_matrix)):
    for j in range(len(final_matrix[i])):
        print(final_matrix[i][j], end=" ")
    print()

这个示例中使用 while 循环来读入矩阵。然后使用两个 for 循环分别打印矩阵和计算镜像矩阵及其和。在打印矩阵时,我们使用了 end=" " 来确保每个元素之间有一个空格。

结论

此算法通过 3 个 for 循环来处理输入的矩阵。因此,时间复杂度为 O(n^2),其中 n 是矩阵的大小。由于我们需要存储原始矩阵和它们的镜像,空间复杂度为 O(n^2)。